开发者学堂课程【精通 Spring Cloud Alibaba:Raft 协议选举基本的概念】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/634/detail/10105
Raft 协议选举基本的概念
内容介绍
一、Zab 算法怎么写
二、Raft 整个底层实现原理
一、Zab 算法怎么写
根据 zab 算法基本原则手写,启用时进行比较,先比较 zxid,zxid 谁最大,谁就是 leader,zxid 相等,比较 myid,myid 谁最大,谁就是 leader,并且 leader 要满足票数过半。
二、Raft 整个底层实现原理
在 Raft 协议算法中分为的角色|名词:
(1)状态:分为三种 跟随者、竞选者(候选人)、领导角色
注意:任何算法都是来源于生活
举个例子,Raft 协议类似于台湾选举,可以进行投票,会分为几个角色。跟随者只能进行投票,不能参与竞选。
竞选者好比台湾,分为两个党派,一个是民主党一个是国民党,民主党有蔡英文,国民党有韩国瑜,跟随者就要投票给竞选者,相当于要投给蔡英文还是韩国瑜。蔡英文、韩国瑜就相当于竞选者即候选人,投票的人就相当于跟随者。
第三种领导角色,相当于台湾选举,假如很多台湾人选了蔡英文,那么蔡英文成为领导角色。跟随者就是专门给别人投票的,竞选者就是被别人投票的有可能成为领导角色,领导角色只能有一个,不能有多个。
(2)大多数: >n/2+1 3/2=1+1=2
n 表示集群总数节点,除以2表示什么呢,举个例子,假设 n=3,3/2=1(不等于0.5程序运算都整除),3/2=1+1=2,满足大于等于的情况下,就可以被使用。
(3)任期:每次选举一个新的领导角色,任期都会增加
注意:任何算法都是来源于生活
比如选举第一届、第二届、第三届主席,一二三就表示第几任主席,表任期。
(4)竞选者谁的票数最多,谁就是领导角色
竞选者一定会成为领导角色吗?
不一定,看票数多少。
(5)存在的疑问
多个竞选者,产生的票数都完全一样,谁到底是领导角色,服务器集群是偶数的情况下。
一旦集群是偶数,在除以2的情况下很容易产生相等票数。
这个问题只要集群是奇数的情况下是不可能存在的。