打卡文章学习:
1、选主意义:主节点负责其他节点的协调和管理,保证其他节点有序的运行。
2、选举算法:
(1).Bully算法,选择ID最大的节点作为主节点。需要用到3种消息:Election消息用于发起选举;Alive消息对Election消息的应答;
Victory消息,宣誓主权。优点:选举速度快、算法复杂度低、实现简单。缺点:每个节点需要有全局的节点信息,额外存储的信息较多;有
频繁切主的风险。
(2).Raft算法,民主投票,少数服从多数。3种角色:Leader,Candidate,Follower。优点:选举速度快、算法复杂度低、易于实现。缺点:要求集群中每个节点都可以互相通信,且需要获取超过半数的投票才能选主成功,通信量大。
(3).ZAB算法,具有优先级的民主投票,尽可能保证数据最新性,ID大的节点优先成为主。3种角色:Leader,Follower,Observer。4种状态:Looking,Leading,Following,Observing。。。每个节点有三元组(server_Id,server_zxID,epoch)。。。选主原则:server_zxID最大者成为Leader,若server_zxID相同,则server_id最大者成为Leader。优点:性能稳定。缺点:选举时间较长,容易出现广播风暴,需要知道所有节点的zxId和serverId,选举时间较长。
展开