gpt4 book ai didi

amazon-web-services - 具有高读取和极低数据的最佳 Elasticsearch 索引分片

转载 作者:行者123 更新时间:2023-12-02 22:12:33 26 4
gpt4 key购买 nike

我正在关注 AWS documentation for "Choosing the number of shards"用于 Elasticsearch 索引。
ES 索引的我的读取 TPS 将非常高(大约 1300 TPS,并且可以增加到 6500 TPS),但是将出现的数据量将非常少(小于 1 GB)。

  1. 为了配合high reads,我打算实现横向扩展(增加数据节点数)
  2. 由于数据非常少,根据上述文档,分片数量应为 1(最佳所需分片大小 ~ 10GB-50GB,而我的数据小于 1GB)

问题:

  1. 据我所知,一个分片没有分布在数据节点上。 (一个分片只能驻留在一个数据节点上)。 这种理解正确吗?
  2. 来自 here , 在 Elasticsearch 中,每个查询都在每个分片的单个线程中执行。然而,多个分片可以并行处理,就像针对同一个分片的多个查询和聚合一样。。如果上面的理解是正确的,如果我只有一个分片,那么所有请求都将在单个数据节点上单线程执行。水平缩放无法实现。
    给定高 TPS 和低数据,索引的最佳主分片/副本数量应该是多少?
    我是不是该
    1. 仍然有单个分片,但有多个副本(与主机数量成比例),或者
    2. 多个主分片本身(其大小以 MB 为单位),和一个副本(以节省内存)。 (我没有看到我的集群中的节点出现严重故障,我需要一个以上的副本!)

最佳答案

  1. 是的,你是对的。设置映射时,您可以设置分片(主要)和副本(副本)的数量。副本分片基本上是您的主分片的克隆,它们用于弹性,但也有利于读取性能(它们可以提供读取操作)。但是,它们可能会损害写入性能,因为弹性需要跨节点复制数据以使其保持最新。根据节点数量,您可以决定主分片和副本分片的数量,同时考虑到弹性(如果节点出现故障会发生什么情况)
  2. 是的,如果您有一个副本数为零的分片,根据文档,它将是一个单线程。这不一定是坏事或好事。请记住,在一个请求的情况下,该请求由多个线程(包含部分数据的多个分片)提供服务,最后这些记录需要累积才能提供给客户端。这会损害性能。此外,即使你有副本,如果你只有一个主分片,这意味着你的索引的所有数据都在一个分片(主分片或副本分片)中。这意味着不同的请求可以由任何分片(因此任何线程)提供服务,但每个请求将由一个线程提供服务(不需要发生累积,这对于 MB 的数据来说并不是一件坏事)

由于数据量很小,而您需要非常高的吞吐量,我会选择拥有 1 个主节点和与节点数量一样多的副本 - 1(这将包含主节点)。现在节点的数量取决于。您必须进行测试,但您可以使用 3 个节点(这是一种常见的弹性/高性能首次设置)。所以总共有 1 个主副本和 2 个副本。检查该设置并尝试对其进行压力测试。

对于压力测试,您可以使用 rally ,这是 elasticsearch 在测试新版本时使用的框架。

关于amazon-web-services - 具有高读取和极低数据的最佳 Elasticsearch 索引分片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61089647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com