目录
- 1、refresh 过程
- 2、flush 过程
- 3、document 写入流程
- 4、总结
1、refresh 过程
数据写入os cache,并被打开供搜索的过程,叫做refresh,默认是每隔1秒refresh一次。
2、flush 过程
将os cache上的数据fsync到 os disk的过程。
3、document 写入流程
(1)document 数据写入buffer缓冲和translog日志文件;
(2)每隔一秒钟,buffer中的数据被写入新的segment file,并进入os cache【refresh】,此时segment被打开并供search使用;
(3)buffer被清空;
(4)重复(1)~(3),新的segment不断添加,buffer不断被清空,而translog中的数据不断累加;
(5)当translog长度达到一定程度的时候,commit操作发生;
(5-1)buffer中的所有数据写入一个新的segment,并写入os cache,打开供使用;
(5-2)buffer被清空;
(5-3)一个commit point被写入磁盘,标明了所有的index segment;
(5-4)filesystem cache中的所有index segment file缓存数据,被fsync强行刷到磁盘上【flush】;
(5-5)现有的translog被清空,创建一个新的translog。
4、总结
(1)refresh过程,document上的数据每隔一秒,更新到os cache,并可以检索,达到检索时间为秒级,近实时性NRT;
(2)translog file 是对当下buffer 操作的记录,若发生宕机,可根据translog 对上一阶段数据进行回放,提高可靠性;
(3)flush 过程,将os cache 中的数据 持久化到 os disk(物化到磁盘),提高稳定性和可靠性。