前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch(7.2.2)-es分布式⼯作原理

ElasticSearch(7.2.2)-es分布式⼯作原理

作者头像
cwl_java
发布2019-11-03 12:36:09
9260
发布2019-11-03 12:36:09
举报
文章被收录于专栏:cwl_Javacwl_Java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。undefined本文链接:https://blog.csdn.net/weixin_42528266/article/details/102854828

简介:带你剖析elastic search分布式⼯作原理

前言

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

节点交互原理

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

写入文档

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

读取文档

  • 客户端向node-1发送读取⽂档请求。
  • 在处理读取请求时,node-1在每次请求的时候都会通过轮询所有的副本分⽚来达到负载均衡。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 节点交互原理
  • 写入文档
  • 读取文档
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档