MST

星途 面试题库

面试题:ElasticSearch中分片和副本的作用分别是什么?

请阐述ElasticSearch中分片和副本在提升系统性能和数据可用性方面各自发挥的作用,并举例说明在不同场景下如何合理配置分片和副本数量。
12.6万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

分片的作用

  1. 提升系统性能
    • Elasticsearch将索引数据分布在多个分片上,每个分片是一个独立的Lucene索引。当有查询请求时,Elasticsearch可以并行处理这些分片上的数据,从而大大提高查询的速度。例如,在一个包含大量文档的索引中,将索引分为10个分片,查询时可以同时在这10个分片上执行搜索操作,相比单个索引顺序处理,速度会显著提升。
    • 写入操作也可以分布到不同的分片上,减轻单个节点的写入压力,提高写入性能。比如在高并发写入场景下,多个写入请求可以分别写入不同的分片,避免了写入瓶颈。
  2. 数据可用性:分片有助于数据的分散存储。即使某个节点出现故障,只要其他节点上的分片正常,整个索引的数据仍然可用。例如,一个索引有5个分片,分布在5个不同的节点上,若其中一个节点宕机,其他4个节点上的分片依然能够提供数据查询服务。

副本的作用

  1. 提升系统性能:副本可以分担读请求。当有大量读请求时,除了主分片可以处理请求外,副本分片也能接受查询请求,从而提高整体的查询吞吐量。例如,在电商网站的商品搜索场景中,大量用户同时查询商品信息,副本分片可以帮助主分片共同处理这些查询,提高响应速度。
  2. 数据可用性:副本是主分片的备份。如果主分片所在的节点发生故障,副本分片可以晋升为主分片,确保数据的可用性和系统的正常运行。例如,在一个高可用的生产环境中,每个主分片都配置了2个副本,当某个主分片所在节点出现硬件故障时,其中一个副本可以立即替代主分片继续提供服务,保证数据不丢失且业务不受影响。

不同场景下的配置示例

  1. 读多写少场景(如文档检索系统)
    • 分片配置:可以根据预计的文档数量和单个节点的处理能力来确定分片数量。如果预计有10亿文档,单个节点处理能力有限,可以适当多分片,如10 - 20个分片,以提高查询并行度。
    • 副本配置:由于读请求多,可以配置较多的副本,如3 - 5个副本。这样在高并发读时,多个副本可以共同分担读压力,提高查询性能,同时也增强了数据的可用性。
  2. 写多读少场景(如日志收集系统)
    • 分片配置:根据写入速度和单个节点的写入能力配置分片。若写入速度快,可以适当增加分片数量,比如配置5 - 10个分片,以分散写入压力,提高写入性能。
    • 副本配置:写操作完成后,副本才会更新,过多副本会影响写入性能。因此,在这种场景下可以配置较少的副本,如1 - 2个副本,在保证一定数据可用性的同时,尽量减少对写入性能的影响。
  3. 高可用性要求极高场景(如金融交易记录存储)
    • 分片配置:根据数据量和节点可靠性配置分片,保证数据均匀分布。例如,配置8 - 12个分片,分布在多个不同的物理节点上,以防止单个节点故障导致数据不可用。
    • 副本配置:为了确保在任何情况下数据都不丢失且服务可用,应配置较多副本,如3 - 5个副本。这样即使多个节点同时出现故障,仍然有足够的副本可以替代主分片,保证数据的完整性和系统的正常运行。