ElasticSearch入门elasticsearch玩转大数据

六十七、Elasticsearch内核原理-继续优化写入流程实现

2017-07-12  本文已影响241人  编程界的小学生

1、完整的优化写入流程步骤

(1)数据写入buffer缓冲和translog日志文件

(2)每个1s,buffer中的数据被写入新的segment file,并进入os cache,此时segment就被打开并供search使用

(3)buffer被清空

(4)重复1~3,新增segment不断添加,buffer不断清空,而translog中的数据不断累加

(5)当translog长度达到一定程度的时候,commit操作发生

2、图解

Paste_Image.png

3、基于translog和commit point,如何进行数据恢复?

fsync+清空translog,就是flush,默认每隔30分钟flush一次,或者当translog过大的时候,也会自动flush。

Paste_Image.png

手动flush的方法:
POST /my_index/_flush
一般别手动flush,让ES自动flush就好了。

4、其他
translog每隔5s被fsync一次到磁盘上,在一次增删改操作之后,当fsync在primary shard 和 replica shard都成功之后,那次增删改操作才会成功,但是这种在一次增删改时强行fsync translog可能会导致部分操作比较耗时,当允许部分数据丢失的话,建议设置异步fsync translog

PUT /my_index/_settings
{
    "index.translog.durability": "async",
    "index.translog.sync_interval": "5s"
}

若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


qrcode_for_gh_577b64e73701_258.jpg
上一篇下一篇

猜你喜欢

热点阅读