raft协议草结

看了一些raft的文章,这篇讲的感觉比较清楚,首先推荐去看这篇:一文搞懂raft算法,这个动画演示可以帮助你理解raft:raft演示

raft协议讲的就是一个分布式的系统如何处理达成一致的:

  • 选举出一个leader,系统数据以leader为准。
  • leader提交数据时分为两阶段提交,一阶段预提交成功后(超过半数节点预提交成功,没成功的会一直发送同步请求),将major日志提交,之后返回客户端写成功,之后进行follower的二阶段更新。
  • leader转换成follower的条件是收到来自更高term的消息,这种情况一般出现在网络分割的情况,被隔离的网络自己重新选举了新的leader,在恢复后就会重新进行选举。
    如何选举:
    每个raft节点有三种状态,leader,follower,candidate,最开始没有leader的时候,每个都是follower,进行一次投票后变为candidate,等待下一轮投票(如果本轮没有选出leader),每轮投票称为一轮term。
    一个完整的提交流程:
  • leader append log entry
  • leader issue AppendEntries RPC in parallel
  • leader wait for majority response
  • leader apply entry to state machine
  • leader reply to client
  • leader notify follower apply log

你可能感兴趣的:(raft协议草结)