1

下面直接点,先描述一下一个查询请求打过来Elasticsearch内部做了什么。

clipboard.png

(1)客户端发送请求到任意一个node,这个node就成为了协调节点coordinating node
(2)协调节点coordinating node会对document进行路由,将请求转发到包含该document的对应的node上面去,此时会使用round-robin随机轮询算法,在primary shard以及所有的replica shard中随机选择一个,让打过来的读请求实现负载均衡
(3)接收请求的node会返回document给协调节点coordinating node
(4)协调节点将document数据返回给客户端

对于读取请求,协调节点将在每个请求上选择不同的分片副本以平衡负载; 它循环遍历所有碎片副本。

在索引文档时,文档可能已经存在于主分片上但尚未复制到副本分片。在这种情况下,副本可能会报告文档不存在,而主副本可能会成功返回文档。索引请求将成功返回给用户后,该文档将在主分片和所有副本分片上可用。

最后简单描述一下随机轮询算法:
举个例子,比如一个协调节点coordinating接受到一个document的4次请求,就会使用随机轮询算法,循环遍历所有shard,将4次请求均匀的打在所有shard上面,比如有4个shard,就会每个shard各一个请求。


郑国
301 声望88 粉丝