[TOC]html
Coordinating Node(协调节点): 客户端随机选择一个Node用来发送操做请求, 这个节点就称为协调节点.node
因为每一个Node都能计算出Document的存储位置, 因此由哪一个Node担任协调节点都是能够的——这对客户端来讲是透明的.算法
① 客户端经过协调节点发送 增删改请求.负载均衡
② 协调节点对客户端提交的文档进行路由, 而后将相关请求转发到 存储该文档的Primary Shard上.elasticsearch
③ Primary Shard处理客户端的请求, 而后将操做后的Document同步到其对应的Replica Shard中.ide
④ 协调节点监控到Primary Shard和其对应的Replica Shard都处理完了该Document, (协调节点)就将操做结果响应给客户端.ui
强调: 增删改操做只能由Primary Shard处理, Replica Shard只能处理查询请求.spa
(1) 流程:htm
① 客户端经过协调节点发送 查询请求.blog
② 协调节点对客户端提交的文档进行路由, 明确存储相关文档的Primary Shard(主分片), 而后使用Round-Robin算法(随机轮训算法), 将查询请求转发到 该Primary Shard及这个主分片对应的任意一个Replica Shard(副本分片) —— 读请求的负载均衡.
③ 接收到查询请求的Shard执行该请求, 而后将查询结果响应给协调节点.
④ 协调节点将查询结果响应给客户端.
(2) 特殊状况说明:
若是某个Document正在Primary Shard中创建索引, 其余Replica Shard尚未来得及同步此索引, 而协调节点却将查询请求转发到了某个这样的Replica Shard上, 就会出现 没有查到这个Document 的状况.
当Document完成索引的建立以后, Primary Shard和Replica Shard中就都有相关数据了.
强调: Replica Shard只能处理读(查询)请求.
参考资料
版权声明
做者: 马瘦风
出处: 博客园 马瘦风的博客
您的支持是对博主的极大鼓励, 感谢您的阅读.
本文版权归博主全部, 欢迎转载, 但请保留此段声明, 并在文章页面明显位置给出原文连接, 不然博主保留追究相关人员法律责任的权利.