# Raft Leader 选举 

__*random election timeout*__

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


