基础理论~raft协议的个人理解

raft协议 一 什么是一致性 所有节点都从同一个state出发,都经过同样的一些操作序列(log),最后到达同样的state。 二 状态 1 Leader Leader副本接受client的更新请求,本地处理后再同步至多个其他副本; 2 Follower 请求的被动更新者,从Leader接受更新请求,然后写入本地日志文件 3 Candidate 如果Follower副本在一段时间内没有收到Leader副本的心跳,则判断Leader可能已经故障,此时启动选主过程,此时副本会变成Candidate状态,直到选主结束。 三 日志应用 1 leader 接受 client请求,追加日志到本地日志文件 2 然后给其它的server发AppendEntriesRPC请求,发送日志 3 当Leader确定一个log entry被safely replicated(绝大多数成员) 4 apply这条log entry到状态机中然后返回结果给客户端 四 选举 1 follower转变成Candidate角色 2 发送给其他follower进行投票选举 3 投票有三种结果 1 自己为主 candiate->leader 2 别人为主 candiate->follower 3 没有结果 投票超时,继续进行选举 五 一些疑问 1 raft协议建议奇数点的目的是避免出现平票现象, 计算方式为 N/2+1 存活节点 2 raft协议把并发能力变差了,因为只有一份log完全被复制到大多数节点后才会处于commit状态,进行下一份log的写入
上一篇:E: package ‘gcc‘ has no installation candidate


下一篇:图解Raft:应该是最容易理解的分布式一致性算法