MST

星途 面试题库

面试题:MongoDB副本集故障切换过程中的选举算法及影响因素

MongoDB副本集故障切换采用了何种选举算法?在选举过程中有哪些因素会影响一个节点成为主节点?
10.8万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 选举算法: MongoDB副本集故障切换采用的是Raft选举算法。Raft算法是一种用于管理复制日志的一致性算法,其目标是提供一种比Paxos更易于理解和实现的一致性算法。它将时间分割成任意长度的任期,每个任期开始于一次选举。

  2. 影响节点成为主节点的因素

    • 优先级(Priority)
      • 每个节点都有一个优先级配置,范围是0到1000。优先级为0的节点永远不会被选举为主节点,它只能作为被动节点(如仲裁节点)存在。而优先级较高的节点在选举时更有机会被其他节点投票选中成为主节点。
    • 日志的完整性(Log Completeness)
      • 拥有最新数据的节点在选举中有优势。如果一个节点的数据落后于其他节点,它不太可能被选举为主节点。因为副本集的一致性要求主节点的数据是最完整和最新的,这样才能确保数据的一致性和完整性。
    • 选举时间戳(Election Timestamp)
      • 每次选举都会生成一个选举时间戳。如果多个节点同时发起选举,具有更新选举时间戳的节点更有可能赢得选举。时间戳反映了选举的先后顺序和新鲜度。
    • 节点状态
      • 只有处于“SECONDARY”状态且能够与大多数节点通信的节点才有资格参与选举。如果节点处于“STARTUP”“STARTUP2”等其他非“SECONDARY”状态,或者无法与大多数节点建立连接,它就不能参与选举成为主节点。