去中心化系统开发,去中心化的噪音往往比中心化的噪音要大,因为去中心化提供的内容较中心化产品来说更不可控一些。于是在知乎有了一个成熟的去中心化社区后,它开始思考一件事情,如何降低用户发现感兴趣内容的成本。
构建去中心化产品的最大难点时去中心化往往跟UGC结合在一起,而在UGC的内容生产方式下,用户也是产品的一部分,这样产品的发展速度可控性没有那么强。同时去中心化产品对于初期用户数量的要求较高,因为如果没有用户,这样的产品根本不能算作一个完整的产品。
去中心化中,每个节点需要与其它所有节点进行状态确认,节点部署规模小的情况下,整个过程还算快捷。但当节点规模超大时,节点间交互过程会随节点数指数增长,整个过程会复杂漫长而不可控。
address private owner;//合约部署(拥有者)账号地址
address private profitor;//收益分配者账号地址,仅该地址有权分配收益
bool _isDIS=false;//质押合约功能状态,true才可以进行质押
ERC20 _Token;//用于分配收益的ERC20资产
KeyFlag[]keys;//用于标记用户地址的质押状态
uint256 size;//质押者地址(用户)数量
uint256 _maxPledgeAmount;//最大质押(底层币)额度
uint256 _maxMiningAmount;//最大(ERC20收益分配)额度
中心化的组网架构中,服务统一进行管理,管理逻辑相对简单和稳定,特别适用于大规模节点部署的情况。
中心化的设计存在的最大问题是中心节点的安危问题,如果中心节点出了问题,整个集群就奔溃了。为了解决这个问题,大多数中心化系统都采用了主备两个“中心节点”的设计方案,例如图3中两台codis-proxy本身采用的是负荷分担方式;
中心化的设计中,对服务的访问往往需要先经过中心节点,会带来额外的该问路径,造成额外的性能开销,例如codis和redis底层存储节点都一样,但是不同组网架构中,coides性能明显差于redis的集群模式