面试题答案
一键面试- 重新路由:
- ElasticSearch 集群使用主节点(Master Node)来管理集群状态。当一个节点出现故障时,主节点会检测到该节点离线,然后更新集群状态。
- 主节点会触发重新路由过程,计算出新的分片分布方案。它会考虑剩余节点的负载、磁盘空间等因素。例如,如果故障节点上有主分片,主节点会选择其他副本分片提升为新的主分片。
- 主节点将新的集群状态信息(包括重新路由的结果)广播给集群中的所有节点,各节点根据新的状态调整自己的分片分配和元数据信息。
- 数据复制:
- 假设故障节点上有主分片,新提升的主分片会通知其他副本分片更新状态。副本分片会从新主分片同步缺失的数据,以保持数据的一致性。
- 如果故障节点上有副本分片,主节点会在其他节点上创建新的副本分片。这个过程是异步的,新副本分片会从主分片复制数据。
- 对于正在进行的索引 API 请求,当节点故障后,请求会被重新路由到可用节点上的相关分片。如果请求涉及到故障节点上的分片,会先等待重新路由和数据同步完成,以保证数据的一致性和可用性。例如,索引一个文档到故障节点上的主分片,主节点故障后,会将该文档索引到新提升的主分片上,同时新副本分片也会复制该文档。