导言
Raft算法用于保证分布式系统的强一致性,被目前知名的etcd所采用。
一. 心跳
集群中每个节点都需要定期向其他节点发送心跳包,如果超过一半的节点超过一定时间(阈值)未收到该节点的心跳包,那么认定该节点已下线。
二. 选举
集群中节点角色可为Leader、Follower或Candidate其中一个。当Follower在一定时间内没有收到来自Leader的心跳,会将自己角色变更为Candidate,然后等待一段随机的时间后,发起选举。
三. 强一致
假设集群中最多n台机器发生故障,那么最少需要2n+1个节点。比起在拜占庭问题中最少需要3n+1个节点,raft协议的优势在于节点不存在欺骗问题。