三人行必有我师

es多副本为什么能提高吞吐量

Elasticsearch | 作者 chen31577 | 发布于2017年12月05日 | 阅读数:8876

分布式查询过程协调节点将查询请求转发到索引的每个主分片或副本分片中,这样主分片和副本分片都会做同样的查询,每个分片(包括副本分片)都返回同样的文档结果集,多个副本岂不是造成同样的事情做多次?没搞明白这个机制,求解答
已邀请:

zhangg7723

赞同来自: zhangyufu chen31577

你理解错了,每次都是读一个分片,主分片或者副本中的一个,每次请求选取的不一样,轮询选择的。这样就能够把压力分散到其他节点,做到负载均衡。

pili

赞同来自: liugang

其实确切的说并不是副本越多,吞吐量约大,这个副本的增加不能仅仅是副本数量的增加,而是建立在硬件资源基础增加上的增加,如果在原有的硬件资源不变的情况下只是增加分片的副本数,那么每个分片(主或副)得到的服务器资源就会相应减少,吞吐量不一定会有所提升。

chen31577 - oracle dba,正在学习ELK

赞同来自:

大神们解答下撒,活跃起来

liugang

赞同来自:

一个请求时只会选取一个副本分片去做查询,但是有多个请求时,多个请求会分发到不同的副本上去,从而减轻那分片的压力

liugang

赞同来自:

楼上正解

HerbertMahone - 那座山,那片海,那座城

赞同来自:

非route请求下,一次请求会在所有shard片上执行,但单一shard片上只会命中主分片或某一副本。在系统资源比较充裕的前提下,适当增加副本量是可以提高运行效率的。但是如果系统资源比较紧张的情况下,增别副本并不能起到性能提升的作用,相反由于副本之间的同步问题,会导致性能下降。

ftforbigdata - 有理想有道德有节操的程序猿for-bigdata

赞同来自:

The first step is to broadcast the request to a shard copy of every node in the index. Just like document GET requests, search requests can be handled by a primary shard or by any of its replicas. This is how more replicas (when combined with more hardware) can increase search throughput. A coordinating node will round-robin through all shard copies on subsequent requests in order to spread the load.

要回复问题请先登录注册