Raft 协议如何解决脑裂问题?
文章目录
通俗易懂的解释
想象一个小学班级需要选一名班长。为了公平,我们制定了一些规则:
- 每个同学可以投票给自己或其他人
- 谁获得超过半数的票,谁就是班长
- 班长每隔一段时间要说"我是班长",如果大家很久没听到这句话,就重新选举
现在,假设教室中间突然掉下一块布帘,把班级分成了两半(这就是"网络分区",也就是"脑裂")。如果按照普通规则,可能两边各自选出一个班长,造成混乱。
但Raft有个聪明的规则:只有获得超过全班一半同学投票的人才能当选班长。因为班级总人数固定,所以不可能在分隔的两边同时选出两个都获得超过半数票的班长。这样,最多只有一边能选出班长,另一边因为凑不够票数就选不出来,避免了"两个班长"的混乱局面。
问题本质定义
脑裂(Split Brain)问题<