# Raft Leader 选举 

__*random election timeout*__

![left](./student-guide/diagram/RaftLeaderElect03_aa_001_20220511.png)
-------------------------------------------------------------
接下来,我们看一种特殊情况,就是在 election timeout 触发了选举后,有 2 个以上的节点都将自己的 term 递增,将自己变为 candidate 角色,并且投票给了自己。而他们又恰恰收到了相同数量的 follower 同意信息,这个时候怎么办呢？系统会重新发起新一轮投票,直到产生出唯一的 leader,为了避免永远不可能有 leader 被选举出来或者多次重复选举,我们可以采用一种叫做 random election timeout 的算法来降低重复的概率,这个算法可以理解为,每个节点在开始 leader 选举时,会随机设置一个区间范围内的 election timeout ,而不是采用统一的值,这样可以很高概率避免多个 candidate 票数相同的情况。 

