您当前的位置: 首页 > 

Dongguo丶

暂无认证

  • 1浏览

    0关注

    472博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

58继续优化写入流程实现durability可靠存储(translog,flush)

Dongguo丶 发布时间:2021-11-15 21:03:04 ,浏览量:1

再次优化的写入流程 实际上真正的写入流程

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

image-20211115200013029

(2)每隔一秒钟,buffer中的数据被写入新的segment file,并进入os cache,此时segment被打开并供search使用

image-20211115200130767

(3)buffer被清空

image-20211115200217646

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

image-20211115200343416

(5)当translog长度达到一定程度的时候,commit操作发生 (5-1)buffer中的所有数据写入一个新的segment,并写入os cache,打开供使用 (5-2)buffer被清空 (5-3)一个commit ponit被写入磁盘,标明了所有的index segment

image-20211115200856612

(5-4)filesystem cache中的所有index segment file缓存数据,被fsync强行刷到磁盘上

image-20211115201006742

(5-5)现有的translog被清空,创建一个新的translog

image-20211115201056899

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

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

POST /my_index/_flush,一般来说别手动flush,让它自动执行就可以了

translog,每隔5秒被fsync一次到磁盘上。在一次增删改操作之后,当fsync在primary shard和replica shard都成功之后,那次增删改操作才会成功

但是这种在一次增删改时强行fsync translog可能会导致部分操作比较耗时,也可以允许部分数据丢失,设置异步fsync translog

PUT /my_index/_settings
{
    "index.translog.durability": "async",
    "index.translog.sync_interval": "5s"
}
关注
打赏
1638062488
查看更多评论
立即登录/注册

微信扫码登录

0.0423s