MST

星途 面试题库

面试题:解决分布式领导选举脑裂问题的常见方案及原理

列举至少两种解决分布式领导选举中脑裂问题的常见方案,并详细说明每种方案的工作原理以及它们各自的优缺点。
12.2万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

法定人数(Quorum)方案

  • 工作原理:在分布式系统中,每个节点都有投票权。进行领导选举时,候选节点争取其他节点的投票。当一个候选节点获得超过半数节点(法定人数)的投票支持时,它就被选举为领导者。例如,在一个由5个节点组成的分布式系统中,法定人数为3,某个候选节点只要获得3个及以上节点的投票,就能成为领导者。
  • 优点:简单直接,在大多数常见场景下能有效避免脑裂。因为只有获得超过半数节点认可的节点才能成为领导者,从概率上降低了多个节点同时被认为是领导者的可能性。
  • 缺点:如果网络分区导致法定人数的节点被隔离在不同分区,可能会出现选举无法进行的情况。比如5个节点的系统,分成2个和3个节点的两个分区,2个节点的分区因未达到法定人数无法选出领导者,3个节点的分区虽达到法定人数可进行选举,但整个系统状态会变得不一致。

租约(Lease)方案

  • 工作原理:领导者会被授予一个租约(时间期限),在租约有效期内,该领导者被认为是合法的。租约到期前,领导者需要向其他节点续约。如果领导者在租约到期时未能成功续约,其他节点会发起新一轮选举。例如,领导者的租约时间设定为10秒,每8秒向其他节点发送续约请求,若因网络问题等原因未成功续约,10秒后其他节点就会开始新选举。
  • 优点:相对灵活,在一定程度上能容忍网络短暂分区。因为在租约有效期内,即使出现短暂网络问题,领导者的地位依然被认可,系统能维持正常运行。
  • 缺点:租约时间设置是个挑战。如果租约时间过长,在领导者故障后需要等待较长时间才能重新选举,影响系统恢复速度;如果租约时间过短,频繁的续约操作会增加网络开销,而且可能因为网络波动导致不必要的重新选举。

仲裁(Arbitrator)方案

  • 工作原理:引入一个独立的仲裁者(可以是一个节点或一组节点)。在领导选举过程中,各个候选节点向仲裁者发送选举请求,仲裁者根据自身的规则决定选举结果,并通知所有节点。例如,一个分布式存储系统,有多个存储节点竞争成为主节点,它们都向仲裁者发送选举信息,仲裁者依据预先设定的优先级等规则确定主节点,并告知所有存储节点。
  • 优点:能有效避免脑裂,因为仲裁者只有一个决策结果,所有节点以仲裁者的决定为准。而且仲裁者可以基于更复杂的逻辑进行选举决策,不仅仅依赖于节点数量。
  • 缺点:仲裁者成为单点故障点,如果仲裁者出现故障,整个选举过程可能会中断。此外,仲裁者与各节点之间的通信延迟可能会影响选举效率。