介绍
当一个集群里的每台机器上都有一套自己的数据,让所有机器上的数据都保证一致的算法,就叫做分布式数据一致性算法。
最知名的分布式一致性算法是paxos,但是它非常难懂,并且由于论文并没有将其算法的细节描述清楚,导致了不同的工程实现。
Raft是另外一个知名的分布式数据一致性算法,由于采用了“强领导人”机制,使其较paxos简单,再加上论文比较详细的描述了算法的细节,使得其在工程上容易实现,所以目前生产环境上应用最广泛,例如etcd。
算法的组成
选举
节点有三种状态
- follower
- candidate
- leader
当节点启动的时候,进入follower状态,接收来自leader的心跳消息。当节点在一段时间后没有收到心跳消息,则认为leader死亡,就自行进入candidate状态,发起选举。向集群里的其他节点发送消息。当收到多数节点的同意消息之后,该节点由candidate状态进入leader状态,向集群里的其他follower发送心跳。