码迷,mamicode.com
首页 > 其他好文 > 详细

32.es读请示内部分发原理

时间:2018-02-24 14:52:33      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:承担   请示   随机选择   replica   分发   其他   建立   family   步骤   

当客户端发送一次读请求时,大致会经过以下几个步骤

1、客户端发送一个请求过去,es的一个node接收到这个请求(随机的node),这个node就被es内部分配成coordinating node(协调节点)

2coordinate nodedocument进行路由,将请求转发到对应的node,此时会使用round-robin随机轮询算法,在primary shard以及其所有replica中随机选择一个,让读请求负载均衡

3、接收请求的node处理实际读请求,将请示的document返回给coordinate node

4coordinate node接收到实际处理读请求的node所返回的document后,将该document返回给客户端。

   

   

其他说明:

1、对于读请求,不是将所有的请求全部转发到primary shard上,而是部分在primary shard 上,一部分在replica shard 上,这样可以让服务器达到负载均衡。

2coordinate node对读请求的document进行路由分发之后就知道这个document在那个shard中。

3round-robin随机轮询算法会尽量让各个parimary shard和replica shard 承担数量相同的请求,从而达到负载均衡。

4、因为任意node都知道每个document在那个node上,所以对客户端来说,可以选择任意节点,所以在进行请求时并未指定节点,由es随机分配。

5、特殊情况:document如果还在建立索引过程中,可能只有primary shard有此document,任何一个replica shard都没有此document,此时可能会导致无法读取到document,但是document完成索引建立之后,primary shardreplica shard就都有了此document,就可以完成读取。

32.es读请示内部分发原理

标签:承担   请示   随机选择   replica   分发   其他   建立   family   步骤   

原文地址:https://www.cnblogs.com/liuqianli/p/8465467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!