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