elasticSearch分布式原理

我们在创建索引的时候,只要指定主分片和副分片数量,elasticSearch会自动帮我们搭建分布式应用。这里要注意的是主分片数量一开始就要根据数据量设计好,因为索引一旦创建,主分片数量没法修改,但是副分片数量是可以修改的。

原理:

1.es和其他中间件⼀样,⽐如mysql,redis有master-slave模式。es集群也会选举⼀个节点做 为master节点

2.master节点它的职责是维护全局集群状态,在节点加⼊或离开集群的时候重新分配分⽚。

3.所有⽂档级别的写操作不会与master节点通信,master节点并不需要涉及到⽂档级别的变更 和搜索等操作,es分布式不太像mysql的master-slave模式,mysql是写在主库,然后再同步 数据到从库。⽽es⽂档写操作是分⽚上⽽不是节点上,先写在主分⽚,主分⽚再同步给副分 ⽚,因为主分⽚可以分布在不同的节点上,所以当集群只有⼀个master节点的情况下,即使 流量的增加它也不会成为瓶颈,就算它挂了,任何节点都有机会成为主节点。

4.读写可以请求任意节点,节点再通过转发请求到⽬的节点,⽐如⼀个⽂档的新增,⽂档通过 路由算法分配到某个主分⽚,然后找到对应的节点,将数据写⼊到主分⽚上,然后再同步到 副分⽚上。

写入数据流程:

说明:三个节点

节点1上是一个主分片R0和一个副分片P1 

节点2上是一个主分片P0和一个副分片R1 

节点3上是两个副分片R1,P1

1、客户端向node-1 master节点发送新增⽂档请求。

2、节点通过⽂档的路由算法确定该⽂档属于主分⽚-P0。因为主分⽚-P0在node-2,所以请求会转 发到node-2。

3、⽂档在node-2的主分⽚-P0上新增,新增成功后,将请求转发到node-1和node-3对应的副分 ⽚-R0上。⼀旦所有的副分⽚都报告成功,node-2向node-1报告成功,node-1向客户端报告成 功。

读数据流程:

客户端向node-1发送读取⽂档请求。

在处理读取请求时,node-1在每次请求的时候都会通过轮询所有的副本分⽚来达到负载均 衡。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值