Elasticsearch原理(七):Elasticsearch架构设计

本文详细介绍了Elasticsearch的架构设计,重点探讨了merge过程、归并策略及其对性能的影响。包括segments merge、force merge、归并线程控制以及routing的计算方法。此外,还提到了数据一致性保证和分片分配的机制。通过对Elasticsearch的深入理解,有助于优化集群性能。
摘要由CSDN通过智能技术生成

前面在Elasticsearch原理(一):实时架构中已经介绍了关于Elasticsearch的实时部分架构,这片文章主要作为对前面Elasticsearch原理系列文章的补充,从Elasticsearch整体架构设计来深入了解Elasticsearch。

性能

首先是关于性能问题,前文也提到了Elasticsearch是可以做到近乎实时,这里就不过多介绍了,有兴趣的可以去上一篇实时架构了解。
#索引文件的更新
数据写入Elasticsearch,形成索引文件(segments),索引文件用看来支持用户查询。Elasticsearch默认每一秒会形成一个segment,就是说一个小时会有3600个segments。这些segments组成完整的数据分片。

merge

对于新的数据,增加segment可以实现数据的写入。而对于修改和删除,同样是依赖新生成的segment来进行修改/删除。因为Lucene的segment一旦形成,是不允许再进行修改的,所以Elasticsearch中所谓的删除是通过在新的segment中打标记实现的,修改则是通过新segment中通过对已有doc的_version来控制的。只有在触发segments merge,对多个segments进行合并成一个大的segment时,才会真正意义上删除掉数据。

segments merge

Elasticsearch自己有一个算法会自动触发segments merge,因为每一秒生成一个文件意味着会有很多很多文件,这是受文件句柄数限制的,所以必定要进行merge。

归并流程:

  1. 通过算法触发segments merge,将多个小的segments合并成一个大的segment。这个过程由独立线程完成,对Elasticsearch的功能没有影响。
  2. 合并过程中删除掉执行delete/update操作的原始doc。
  3. 刷新新的segment到磁盘。
  4. 检索请求从小的segment转移到大的segment中。
  5. 等待所有请求都转移成功后,删除小的segments。
force merge</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值