ES第十二天-ES写入原理

在这里插入图片描述
1、用户发出写入数据请求,写到内存Buffer中。内存Buffer会将写入的数据操作记录在translog中防止机器奔溃数据丢失。
2、内存Buffer每隔一个周期会将内存Buffer中的数据生成一个index segment file(它记录了被删除了的文件),segment本身就是一个文件,从内存buffer写入到segment的过程就是一个写文件的过程。 操作系统层面对新生成的文件不会马上持久化到磁盘,而是写入到OS Cache中,这个写入是通过refresh操作写进去的,refresh的过程除了在OS Cache生成这个文件以外,还会让底层Lucene的index reader打开这个文件,让新生成的这个文件对搜索可见。也就是说当segment写入成功时,这份新数据对外就可以访问了。
3、当OS Cache达到阈值或者达到一定时间(默认30分钟)ES会触发flush:flush主要是做三步事情:
1、commit,就是将当前内存buffer里的数据全部写到index segment file。
2、触发fsync,溢写到磁盘。
3、清空translog。

commitpoint记录当前可用的segment,方便回收。

当segment达到一定阈值(数量或者大小),segment会选择相似的segment进行合并成一个新的segment文件,并触发flush操作,然后创建新的commit point标记这个新生成的segment,将旧有的若干个segment标记删除。 之后将新的segment搜索状态打开。这些被标记了删除的segment将在后续统一进行删除。

好处

读写分离,互不受影响,数据写入到文件系统缓存是很快的,但这时候就已经可以使得数据可以被访问了, 而持久化的工作只需要另外一边系统去慢慢的积攒,异步去同步到磁盘。

参考官方:
https://www.elastic.co/guide/cn/elasticsearch/guide/current/near-real-time.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值