毕设设计涉及区块链的共识算法,需要理论支撑,所以找了一篇Raft算法的文章来看。看完之后,对Raft算法有了初步的认识,在此记录一下Raft算法解决的问题,以及如何解决问题的方法。
1. 关于分布式共识(consensus)和分布式一致性(consistency)
分布式共识和CAP理论中的一致性(C)其实是异曲同工的,他们的含义是:在分布式系统中,所有节点对同一份数据的认知能够达成一致。
2. Raft解决一致性问题的方法?
首先,将一致性问题拆分成了三个子问题,分别是:
- 领导选举 --- Leader Election;
- 日志复制 ---log replication ;
- 安全性 --- safety。
其次,是通过压缩状态空间(这个说法太官方了,我暂时理解不深)。
想要直观地看Raft是如何实现数据一致性的话,文章里有一个动画,生动地展示了Raft的过程。
3. 个人理解:
Raft运行领导选举机制,选择出一个领导节点,这个领导节点在分布式系统中充当临时的中心管理者,他的职责是全权管理分布式系统的日志。具体来说就是:接收客户端请求,将其复制到跟随节点,告诉跟随节点什么时候可以处理这些请求。如果领导节点发生故障或者断开连接(简称挂掉),那么Raft将会重新进行领导选举机制。
至于日志复制机制,我认为就是在领导节点在进行日志的管理,即通过临时的领导节点与其他所有跟随节点之间进行日志的通信,从而实现数据一致性。
详细内容参考之前提到的文章,动画,论文。