内容简介:elasticsearch被称为准实时搜索,原因是对es的写入操作成功后,写入的数据需要1秒钟后才能被搜索到,因此es搜索是准实时或者又称为近实时(elasticsearch底层使用的Lucene,而Lucene的写入是实时的。但Lucene的实时写入意味着每一次写入请求都直接将数据写入硬盘,因此频繁的I/O操作会导致很大的性能问题。当一个写请求发送到es后,es将数据写入
elasticsearch被称为准实时搜索,原因是对es的写入操作成功后,写入的数据需要1秒钟后才能被搜索到,因此es搜索是准实时或者又称为近实时( near real time
)。
elasticsearch底层使用的Lucene,而Lucene的写入是实时的。但Lucene的实时写入意味着每一次写入请求都直接将数据写入硬盘,因此频繁的I/O操作会导致很大的性能问题。
原理
当一个写请求发送到es后,es将数据写入 memory buffer
中,并添加事务日志( translog
)。如果每次一条数据写入内存后立即写到硬盘文件上,由于写入的数据肯定是离散的,因此写入硬盘的操作也就是随机写入了。硬盘随机写入的效率相当低,会严重降低es的性能。
因此es在设计时在 memory buffer
和硬盘间加入了 Linux 的页面高速缓存( File system cache
)来提高es的写效率。
当写请求发送到es后,es将数据暂时写入 memory buffer
中,此时写入的数据还不能被查询到。默认设置下,es每1秒钟将 memory buffer
中的数据 refresh
到Linux的 File system cache
,并清空 memory buffer
,此时写入的数据就可以被查询到了。
但 File system cache
依然是内存数据,一旦断电,则 File system cache
中的数据全部丢失。默认设置下,es每30分钟调用 fsync
将 File system cache
中的数据 flush
到硬盘。因此需要通过 translog
来保证即使因为断电 File system cache
数据丢失,es重启后也能通过日志回放找回丢失的数据。
translog
默认设置下,每一个 index
、 delete
、 update
或 bulk
请求都会直接 fsync
写入硬盘。为了保证 translog
不丢失数据,在每一次请求之后执行 fsync
确实会带来一些性能问题。对于一些允许丢失几秒钟数据的场景下,可以通过设置 index.translog.durability
和 index.translog.sync_interval
参数让 translog
每隔一段时间才调用 fsync
将事务日志数据写入硬盘。
解决
对于需要写入后实时查询的数据,可以通过手动 refresh
操作将 memory buffer
的数据立即写入到 File system cache
。当然,该解决方案的代价就是降低了ES的写性能。
- 单个文档更新后立即
refresh
PUT /test/_doc/1?refresh {"test": "test"} PUT /test/_doc/2?refresh=true {"test": "test"} 复制代码
-
refresh
整个索引的memory buffer
POST /test/_refresh 复制代码
以上所述就是小编给大家介绍的《elasticsearch准实时原理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- linux内核实时进程的调度原理
- 源码分析 Sentinel 实时数据采集实现原理
- 一文探究web实时通信方案并深入websocket原理与应用
- LearningAVFoundation之拍摄+实时滤镜+实时写入
- 基于实时计算(Flink)与高斯模型构建实时异常检测系统
- 什么是实时计算,实时计算的相关技术主要分为哪几个阶段?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
YC创业营: 硅谷顶级创业孵化器如何改变世界
兰德尔·斯特罗斯 (Randall Stross) / 苏健 / 浙江人民出版社 / 2014-8-1 / CNY 52.90
在互联网创业成本日益降低、融资却越来越难的今天,硅谷的Y Combinator因何成为全世界创业者趋之若鹜的创业圣地?为什么25岁左右的青年最适合创业?创业者如何才能在遴选面试中脱颖而出?为什么YC特别看好那些主要由黑客组成的创业团队? YC真的歧视女性吗?如何想出能够赢得投资的新点子?创业者应该如何寻找联合创始人? 获准进入Y Combinator及其创业公司全程跟踪批量投资项目的第一人,......一起来看看 《YC创业营: 硅谷顶级创业孵化器如何改变世界》 这本书的介绍吧!