作者:手机用户2502895461 | 来源:互联网 | 2023-07-08 18:12
大纲:共识算法简介结点状态的相互转换结点如何保证数据一致 一、共识算法简介个人理解:在一个分布式系统中,共识算法保证的时CP而不是AP。假设一个分布式存储系统由多个结点组
大纲:
- 共识算法简介
- 结点状态的相互转换
- 结点如何保证数据一致
一、共识算法简介
个人理解:在一个分布式系统中,共识算法保证的时CP而不是AP。
假设一个分布式存储系统由多个结点组成,所有结点需要保证数据的一致性。
二、结点的状态与竞选leader
每个节点有三种状态:follower,candidate,leader,状态之间是互相转换的
leader-主节点,主节点负责与客户端通讯;给follower发心跳;同步日志与提交命令给follower
follower-从节点,每一个follower有一个倒计时器,时间随机,倒计时结束后自动转换成candidate,结点的初始状态都是follower
candidate-向其他结点发送投票请求,收到半数以上票时,candidate成为leader,并向其他follower发送心跳。如果再给其他follower发心跳同时收到了其他candidate的心跳说明同时当选leader,则本轮竞选无效。再通过重置倒计时器重新竞选。
倒计时器-当受到candidate投票请求,与leader心跳,倒计时器重新刷新倒计时
三、结点如何保证数据一致
客户端向服务端发送存储数据的请求,
- leader记日志,把消息分发follower记日志
- eader提交响应客户端提交成功
- 然后通知follower提交
发生网络分区时,
基于raft的分布式系统需要奇数个节点(方便半数投票与分区时一个分区中结点过半),两个分区分别选举leader,出现脑裂,那么超过半数分区的leader可以继续对外服务,另一个分区leader无法提交。恢复网络正常后,小于半数的leader重新变成follower,同时该分区的结点通过主节点日志追加丢失的数据