面试题答案
一键面试选主设计思想
Elasticsearch 基于 Quorum(法定人数)来选主。在一个由 N 个节点组成的集群中,Quorum 数量为 (N/2) + 1
(N 为奇数),这样能确保在大多数节点存活的情况下可以选出主节点。
网络分区时保证数据一致性和可用性的措施
- 选主过程:
- 当出现网络分区,不同分区的节点会尝试选主。只有包含超过 Quorum 数量节点的分区才有资格选出主节点。例如,一个 5 节点的集群,Quorum 是 3。如果网络分区后,一个分区有 3 个节点,另一个分区有 2 个节点,那么有 3 个节点的分区可以选出主节点,而 2 个节点的分区无法选出主节点。
- 选出主节点后,主节点负责管理集群状态,包括索引的创建、删除,节点的加入、离开等操作。
- 数据复制:
- Elasticsearch 采用多副本机制。每个索引的主分片有多个副本分片。主节点负责协调副本分片的分配和同步。在网络分区后,主节点会确保数据在本分区内的副本之间保持一致。例如,主分片有数据更新时,主节点会将更新同步到本分区内的副本分片上。
- 当网络恢复后,主节点会重新协调跨分区的副本同步,使数据在整个集群范围内达到一致。
措施背后的原理
- 基于 Quorum 选主原理:
- 通过要求大多数节点参与选主,能保证选出的主节点所在的分区是集群的主要部分,这样可以避免脑裂问题(即多个分区都认为自己是主集群,导致数据不一致)。因为只有大多数节点认可的主节点才是有效的,这就确保了集群状态的一致性。
- 数据复制原理:
- 多副本机制一方面提高了数据的可用性,当某个副本所在节点故障时,其他副本可以继续提供服务。另一方面,通过主节点协调副本同步,在网络分区期间保证本分区内数据一致,网络恢复后保证整个集群数据一致。主节点基于日志复制的方式将数据变更同步到副本,确保副本之间的数据一致性。