MST

星途 面试题库

面试题:ElasticSearch选举算法的主要类型及基本原理

请简要介绍ElasticSearch中常用的选举算法有哪些,并阐述每种选举算法的基本工作原理。
44.8万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

常用选举算法

  1. Bully算法
  2. Raft算法

算法原理

  1. Bully算法原理
    • 选举发起:当一个节点发现当前leader失效(如一段时间内未收到心跳),且自己的节点ID比其他存活节点ID都大时,它会发起选举。
    • 选举过程:该节点向所有比它ID小的节点发送选举消息。收到选举消息的节点如果还没有投过票,就会回复同意选举消息,并承认发起选举的节点为leader。如果有节点不同意(比如它已经投票给了其他节点或者自己认为自己应该是leader),发起选举的节点会重新发起选举。最终,节点ID最大的节点成为leader。
  2. Raft算法原理
    • 角色:Raft算法中有三种角色,分别是领导者(Leader)、跟随者(Follower)和候选人(Candidate)。
    • Leader选举
      • 初始状态下,所有节点都是跟随者。跟随者在一段时间内(选举超时时间)没有收到来自leader的心跳,就会转换为候选人,并发起选举。
      • 候选人会给自己投票,并向其他节点发送请求投票的消息。其他跟随者节点在收到请求投票消息时,如果还没有投过票,且候选人的日志至少和自己的一样新,就会投票给该候选人。
      • 当候选人获得超过半数节点的投票时,就会成为leader。如果在选举过程中,有多个候选人同时竞争,可能会出现选举冲突,这时会通过随机化选举超时时间来避免,重新进行选举。
    • 日志复制:leader负责接收客户端的写请求,并将日志条目复制到所有的跟随者节点上,以保持集群状态的一致性。