Kafka、Redis、ES中间件操作系统底层的优化
本文意在利用知名中间件 Kafka、Redis、ES ,来复习上一篇操作系统底层知识的学习
上一篇地址:关于IO多路复用,文件的Page Cache请看: https://www.cnblogs.com/lean-blog/p/13559556.html
kafka吞吐量高的原因:
-
数据读写为顺序读写,减少了
-
数据读取为零拷贝 -pagecache
-
数据分区存储,提高了读写的并行度
-
数据存储是经过压缩
-
批量读写操作
redis速度快的原因:
-
单线程,省去了多线程切换的问题
-
协议简单
-
数据内存储存,读取速度快
-
内部使用Epoll的IO多路复用机制
ES数据的写入流程:
主要:write -> refresh -> flush
-
write:文档数据到内存缓存(),并存到 translog(日志保证数据不丢失)
-
refresh:内存缓存中的文档数据,到文件缓存(pageCache)中的 segment 。此时可以被搜到
-
flush 是缓存中的 segment 文档数据写入到磁盘(会清空对应数据的translog日志)
-
merge 将小的segment合并成大文件过程,提高搜索过程