分布式共识算法-raft

大纲:

  1. 共识算法简介
  2. 结点状态与竞选leader
  3. 如何保证数据一致

 

一、共识算法简介

个人理解:在一个分布式系统中,共识算法保证的时CP而不是AP,一致的数据才能称为共识。

假设一个分布式存储系统由多个结点组成,基于raft的分布式系统需要奇数个节点(保证竞选投票与分区时一个分区中结点过半)

 

二、结点的状态与竞选leader

每个节点有三种状态:follower,candidate,leader,状态之间是互相转换的

leader-主节点,主节点负责与客户端通讯;给follower发心跳;同步日志与提交命令给follower

follower-从节点,每一个follower有一个倒计时器,时间随机,倒计时结束后自动转换成candidate,结点的初始状态都是follower

candidate-向其他结点发送投票请求,收到半数以上票时,candidate成为leader,并向其他follower发送心跳。如果再给其他follower发心跳同时收到了其他candidate的心跳说明同时当选leader,则本轮竞选无效。再通过重置倒计时器重新竞选。

倒计时器-当受到candidate投票请求,与leader心跳,倒计时器重新刷新倒计时

 

三、如何保证数据一致

客户端向服务端发送存储数据的请求,

  1. leader记日志,把消息分发follower记日志
  2. leader提交响应客户端提交成功
  3. 然后通知follower提交

发生网络分区时,

两个分区分别选举leader,出现脑裂,那么超过半数结点的分区的leader可以继续对外服务,另一个分区leader无法提交。恢复网络正常后,小于半数结点的分区leader重新变成follower,同时该分区的结点通过主节点日志追加丢失的数据

posted @ 2022-04-19 16:58  扶不起的刘阿斗  阅读(145)  评论(0)    收藏  举报