shengyayun 10 X 10
shengyayun:~/blog$ source "Raft算法分析.sh"

shengyayun:~/blog$ printenv
CREATED_DATE = 2019-04-22
UPDATED_DATE = 2019-04-22
TAGS = raft
CATEGORIES =

shengyayun:~/blog$ grep -lr $TAGS post
2019-04-22 Raft算法分析
Raft算法分析

导言

Raft算法用于保证分布式系统的强一致性,被目前知名的etcd所采用。

一. 心跳

集群中每个节点都需要定期向其他节点发送心跳包,如果超过一半的节点超过一定时间(阈值)未收到该节点的心跳包,那么认定该节点已下线。

二. 选举

集群中节点角色可为Leader、Follower或Candidate其中一个。当Follower在一定时间内没有收到来自Leader的心跳,会将自己角色变更为Candidate,然后等待一段随机的时间后,发起选举。

三. 强一致

假设集群中最多n台机器发生故障,那么最少需要2n+1个节点。比起在拜占庭问题中最少需要3n+1个节点,raft协议的优势在于节点不存在欺骗问题。