MST
星途 面试题库

面试题:ElasticSearch分片读写时关闭节点,如何从基础机制保障数据一致性

在ElasticSearch中,当分片处于读写操作时关闭某个节点,简要阐述ElasticSearch从副本机制、选举机制等基础层面是如何保障数据一致性的。
38.0万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
  1. 副本机制
    • ElasticSearch 中每个主分片都有对应的副本分片。当某个节点关闭,且该节点上的主分片正在进行读写操作时,副本分片会发挥关键作用。
    • 对于读操作,如果主分片所在节点关闭,ElasticSearch 可以从副本分片中读取数据,因为副本分片是主分片数据的拷贝,能保证数据的一致性读取。
    • 对于写操作,ElasticSearch 采用的是异步复制的方式。在正常情况下,写操作首先在主分片上执行,然后异步复制到副本分片。当主分片所在节点关闭时,ElasticSearch 会自动将副本分片提升为新的主分片。由于副本分片是基于主分片的复制,在提升为新主分片后,能保证数据的一致性。同时,ElasticSearch 会记录未完成的写操作日志,当新的主分片确定后,会重放这些日志,确保数据不会丢失,进一步保障数据一致性。
  2. 选举机制
    • ElasticSearch 使用基于 Quorum 的选举机制来选择新的主分片。Quorum 是指大多数节点的概念,计算公式一般为 (master eligible nodes / 2) + 1
    • 当节点关闭,集群需要选举新的主分片时,只有符合选举条件(如具有选举权且节点状态正常等)的节点才能参与选举。
    • 选举过程中,节点之间通过交换信息来确定哪个节点应该成为新的主分片。例如,节点会比较彼此的版本号、节点 ID 等信息。版本号较高且符合选举规则的节点会被选举为新的主分片。这样可以保证在节点故障后,新选举出的主分片能够代表最新的数据状态,从而保障数据一致性。同时,只有当大多数节点认可新的主分片时,选举才会成功,这也防止了脑裂等问题导致的数据不一致。