elasticSearch核心概念的介绍(十六):ES分布式工作原理

前言

  • elasticsearch是分布式的,但是对于我们开发者来说并没有过多的参与其中,我们只需启动对应数量的节点,并给他们分配相同的cluster.name让他们归属于同一个集群,创建索引的时候只需要指定索引主分片数量和副分片数量就行,其他的都交给了ES内部自己实现
  • 这和数据库的分布式和同源的solr实现分布式都是由区别的,数据库要做集群分布式,比如分库分表需要我们指定路由规则和数据库同步策略,包括读写分离,主从同步登,solr的分布式也依赖zookeeper,但是elasticsearch完全屏蔽了这些。
  • 虽然elasticsearch天生就是分布式的,并且在设计时屏蔽了分布式的复杂性,但我还得知道它内部的原理
节点交互原理

在这里插入图片描述

  1. es和其他中间件一样,比如mysql,redis有master-slave模式。es集群也会选举一个节点作为master节点
  2. master节点它的职责是维护全集群状态,在节点加入或离开集群的时候重新分配分片
  3. 所有文档级别的写操作不会与master节点通信,master节点并不需要涉及到文档级别的变更和搜索登操作,es分布式不太像mysql的master-slave模式,mysql是写在主库,然后在同步数据到从库。而es文档写操作是分片上而不是节点上,先写在主分片,主分片在同步给副分片,因为主分片可以分布在不同的节点上,所以当集群只有一个master节点的情况下,即使流量的增加它也不会成为瓶颈,就算它挂了,任何节点都会有机会成为主节点
  4. 读写可以请求任意节点,节点在通过转发请求到目的节点,比如一个文档的新增,文档通过路由算法分片到某个主分片,然后找到对应的节点,将数据写入到主分片上,然后在同步到副分片上。
写入文档

在这里插入图片描述

  • 新增文档

1、客户端向node-1发送新增文档请求
2、节点通过文档的路由算法确定该文档属于主分片-P0.因为主分片-P0在node-3,所以请求会转发到node-3
3、文档在node-3主分片-P0新增,新增成功后,将请求转发到node-1和node-2对应的副分片-R0上。一旦所有的副本片都向node-1报告成功,node-1向客户端报告成功。

  • 读取文档

1、客户端向node-1发送文档请求
2、在处理读取请求时,node-1在每次请求的时候会通过轮询所有的副本分片来达到负载均衡。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈橙橙丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值