ElasticSearch分布式架构原理

 一个ES集群中有多个Server节点,每个Server节点中含有多个Index。

主节点(Master)

        主资格节点的主要职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是集群的一部分,并决定哪些分片分配给相关的节点。稳定的主节点对集群的健康是非常重要的,默认情况下任何一个集群中的节点都有可能被选为主节点,索引数据和搜索查询等操作会占用大量的cpu,内存,io资源,为了确保一个集群的稳定,分离主节点和数据节点是一个比较好的选择。 

数据节点(Server) 

        数据节点主要是存储索引数据的节点,主要对文档进行增删改查操作,聚合操作等。数据节点对cpu,内存,io要求较高, 在优化的时候需要监控数据节点的状态,当资源不够的时候,需要在集群中添加新的节点(可横向拓展)。

节点对等

        每个节点都能接受请求每个节点接收到请求后能把该请求路由到相关数据的其它节点上, 接受原始请求的节点负责采集数据并返回给客户端。

Index(索引)

        在ES中的index,可以理解为是一份数据的标识,类似于在hive中一份数据要通过一个表名来标识。

一个Index含有多个分片(shard),其中有一个 primary 主分片,负责写入,其他副本为 replica,不能写,只能同步 primary 的数据,但可以处理读请求

分片机制

        将文本数据切割成n个小文本存储在不同的节点, 减少大文件存储在单个节点上对设备带来的压力。

分片控制(路由计算)

        当索引一个文档时,我们要确定这个文档存到那个分片中,当创建一个文档的时候,也要确定这个文档应该存到那个分片中。这个确定的方法我们是通过一个公式(路由计算)来确定的:

shard = hash(routing) % number_of_primary_shards

        routing 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值。 routing 通过hash 函数生成一个数字,然后这个数字再除以 number_of_primary_shards (主分片的数量)后得到余数 。这个分布在 0 到 number_of_primary_shards-1 之间的余数,就是我们所寻求的文档所在分片的位置

分片的副本

        在集群中某个节点宕机后,通过副本可以快速对缺失数据进行复盘

分片的负载均衡

        例如现在有10个分片(shard),集群中有三个节点, ES会进行均衡分配,以保持整体请求的负载均衡。增加或减少节点时会自动负载均衡(rebalance

 ES的底层是Lucene引擎,ES的每一个分片对应到底层实际上就是一个 Lucene Index包含多个 segment 文件,和一个 commit point 文件

segment

        segment 文件存储的就是一个个的 Document,是负责真正存储数据的。

commit point

        commit point 相当于一个索引文件,记录了都有哪些 segment 文件。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Elasticsearch是一个分布式的搜索引擎,它的架构原理可以分为以下几个部分: 1.节点:Elasticsearch的每个实例都是一个节点,每个节点都有一个唯一的名称,可以通过节点名称来访问它。一个节点可以有多个索引和多个分片。 2.索引:Elasticsearch的索引类似于关系型数据库的数据库,它是一组有相同数据结构的文档的集合。索引可以分为多个分片,每个分片可以存储一部分数据。 3.分片:Elasticsearch将索引分为多个分片来实现水平扩展。每个分片都是一个独立的Lucene索引,它可以存储一部分数据。一个分片可以在集群中的多个节点之间进行复制,以实现高可用性。 4.集群:Elasticsearch的集群由多个节点组成,每个节点可以有多个分片。集群中的节点可以互相通信,共同处理搜索请求。集群中的每个节点都有自己的角色,如主节点、数据节点和客户端节点等。 5.路由:当客户端向Elasticsearch发送搜索请求时,请求会被路由到与之匹配的分片上。Elasticsearch使用分片路由算法来决定哪些分片应该处理请求。 6.倒排索引:Elasticsearch使用倒排索引来加速搜索。倒排索引是一种将文档中的每个词与它出现的文档建立关系的数据结构。它使得Elasticsearch可以快速地定位包含特定词汇的文档。 总之,Elasticsearch架构分布式的、可扩展的、高可用的,并且它使用倒排索引来实现高效的搜索。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值