面试题答案
一键面试分片概念
分片是Elasticsearch将索引划分成的较小的单元。通过分片,Elasticsearch可以将一个大的索引数据分布在集群中的多个节点上,从而实现水平扩展,提升处理能力和存储容量。每个分片本质上是一个独立的Lucene索引,可以独立进行数据的存储和检索操作。
主分片作用
- 数据写入:主分片负责接收并处理文档的写入请求。当一个新文档被索引时,Elasticsearch会根据文档的ID和路由算法确定将该文档写入到哪个主分片。
- 数据一致性:主分片确保写入数据的一致性和完整性。只有主分片成功写入数据后,相关操作才会被认为是成功的。它在整个集群中维护数据的权威版本。
副本分片作用
- 高可用性:副本分片作为主分片的备份,当主分片所在节点发生故障时,副本分片可以被提升为主分片,继续提供服务,保证数据的可用性,防止数据丢失。
- 读性能提升:副本分片可以分担读请求,因为副本分片也保存了完整的数据拷贝,客户端的读请求可以被发送到副本分片,从而提高整个集群的读性能,尤其是在高并发读的场景下。
主分片和副本分片区别
- 写入权限:只有主分片具有写入权限,负责处理所有的写入操作;而副本分片只能从主分片复制数据,不能直接接收写入请求。
- 数量灵活性:主分片的数量在索引创建时就固定下来,之后不能轻易更改;副本分片的数量可以根据需求动态调整,以提高可用性和读性能。
- 角色职责:主分片专注于维护数据的一致性写入,是数据修改的唯一入口;副本分片则主要提供数据冗余和读负载均衡,增强系统的容错能力和读性能。