北海网站设计,网站费做进什么科目,网站开发补全,一个ip地址做多个网站一、角色划分Follower#xff1a;完全被动#xff0c;不能发送任何请求#xff0c;只接受并响应来自leader 和 candidate 的 message#xff0c;每个节点启动后的初始状态一定是follower#xff1b;Leader#xff1a;处理所有来自客户端的请求#xff0c;以及复制 log到…一、角色划分Follower完全被动不能发送任何请求只接受并响应来自leader 和 candidate 的 message每个节点启动后的初始状态一定是followerLeader处理所有来自客户端的请求以及复制 log到所有followerCandidate用来竞选一个新leadercandidate 由 follower 触发超时而来二、Leader选举流程1、PreVote一般来说raft的选举仅且只有一轮投票选出集群leader但会存在缺陷就是网络分区后少数派节点虽然都不会得到足够的票数成为分区Leader但任选编号term却会不断增加在网络分区恢复少数派节点会因为term较大而迫使多数派Leader下线我们叫他做捣蛋鬼。为了避免捣蛋鬼谋权篡位我们引入Pre-Vote只有得到绝大多数选票才有被提拔为候选人的资格在PreVote算法中Candidate首先要确认自己能赢得集群中大多数节点的投票这样才会把自己的term增加然后发起真正的投票其他投票节点同意发起选举的条件是同时满足下面两个条件没有收到有效领导的心跳至少有一次选举超时Candidate的日志足够新Term更大或者Term相同raft index更大PreVote算法解决了网络分区节点在重新加入时会中断集群的问题。在PreVote算法中网络分区节点由于无法获得大部分节点的许可因此无法增加其Term。然后当它重新加入集群时它仍然无法递增其Term因为其他服务器将一直收到来自Leader节点的定期心跳信息。一旦该服务器从领导者接收到心跳它将返回到Follower状态Term和Leader一致。2、Vote超时驱动心跳间隔/Leader与followers 间通信超时触发选举的时间随机的超时时间降低选举碰撞导致选票被瓜分的概率选举流程Follower – Candidate 赢得选举Candidate – Leader另一个节点赢得选举Candidate – Follower一段时间内没有任何节点器赢得选举Candidate – Candidate三、实现时序