首页 > 体育 >

分布式强一致性数据库的灵魂-Raft 算法(2)

2018-06-01 22:14:30 网络整理 阅读:70 评论:0

Consensus Algorithm

一致性算法(Consensus Alogrithm)就是为了解决分布式集群所面临的诸多问题而准备的。它保证了系统在多个状态上的Agreement,另外在集群的大部分节点挂掉后能够保证数据一致性。Raft

Replicated State Machine

大多数的一致性算法其实都是采用了Replicated State Machine的模型。对于这个模型你可以认为数据是被放在状态机上,用户操作集群时 首先需要写入log,然后通过一致性算法将log复制到其他机器,一旦确定其他机器都接收到log后就会认为该log被提交了,最后其他节点会依次将log存放到状态机。

State

Raft有着三个状态,第一个状态就是Leader,即使Raft Group存在多个节点,Leader也只会存在一个,也只有Leader能负责所有数据的读写,这样就不会出现线性一致性的问题。

当一个集群选出了Leader后其他集群的节点都会变成Follow,这个Follow只负责一件事就是接收Leader的Replication logs。当一个Follow没有接收到数据或者发现集群中没有Leader的时候,就会进入Candidate状态,这个状态表示可以开始选举了。

分布式强一致性数据库的灵魂-Raft 算法(2)

Term

Raft是不依赖系统的时间,它是将时间分成一个个Term,每个Term可以是任意长度,每次Term开始的时候都是由一次新的选举产生的,然后在这个Term内选出一个Leader,该Leader会一直服务到所在Leader结束。

结合Raft Term就可以进行Raft的选举。首先当系统启动后所有的节点都会进入Follow状态,Follow没有接收到任何请求的话,过一段时间就会进入Candidate状态,然后询问其他节点是否投票,如果其他节点反馈已经有新的Leader,这个Candidate就会变成Follow,而当Candidate接收到大多数的投票后就会变成Leader,之后会立即将一个log发送给其他节点开始续租Leader的时间租约。

相关文章