raft算法
由于paxos算法难以理解,今天来理解下 "易于理解的一致性算法" raft
raft本质是选举领导,领导进行管理日志,实现的一致性算法
选举领导
每个节点角色都会在以下几种切换:...CD只能支持A
2:在投票僵持时,每个节点设置一个随机的超时时间并且重新选举, 例如A在选票相同时,100ms之后重新发起任期为2的选举,B在200ms之后发起任期为2的选举
日志复制
领导者负责整个分布式节点的数据复制同步...领导者向所有跟随者发送日志数据
3:跟随者记录数据更新,记录日志
4:跟随者确认接收数据,发送给领导者
5:领导者发送确认提交数据
如果领导者无法接收到半数以上的跟随者确认数据时,将判断这条数据插入失败
日志
在raft...算法中,所有的数据同步,都由日志来实现的,日志有以下特点:
1:日志不会被删除
2:可以认定集群的领导者日志最全,最新
日志存储
raft日志存储附带了任期号和具体操作数据的日志(类似于redis 的命令...以领导者数据为准)
当领导者宕机后,跟随者将选出存储日志最新的领导者,并且以其通信同步日志
旧领导者恢复后,成为跟随者,同步新领导者的日志
日志压缩
由于日志不会被删除,在运行中,日志将会无限增长,所以raft