raft分布式一致性原理(一)

raft分布式一致性原理

无限循环选leader异常

当启动所有server时,默认都是follower 此时没有leader角色,然后follower会转换成candidate 身份进行选取leader

@选取leader失败导致的重复选取

当所有的follower 都转换为candidate身份进行leader选举时,可能导致选取leader失败,那么会更新选举时间,进行下一次重新选举

此时就可能导致无限次选举

@随机定时器

其实就是采用 150ms - 300ms之间 随机产生一个定时时间,此时默认同一时刻基本只有一个server会转换为candidate身份,解决了单次无法选举出leader的问题

@选举leader 限制

候选人进行选举leader时发起并行请求投票 RPC 实现了这样的限制: RPC 中包含了候选人的日志信息,然后投票人会拒绝掉那些日志没有自己新的投票请求

总的来说 就是过滤掉那些日志比较落后的候选人节点

Raft 通过比较两份日志中最后一条日志条目的索引值和任期号定义谁的日志比较新。如果两份日志最后的条目的任期号不同,那么任期号大的日志更加新。如果两份日志最后的条目任期号相同,那么日志比较长的那个就更加新。