Kafka速度之谜:高性能的幕后秘密大揭秘
发布时间:2024年01月23日
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Kafka的介绍
- kafka是linkedIn开源的分布式消息系统,归给Apache的顶级项目
- kafka主要特点是基于Pull的模式来处理消息的消费的,追求高吞吐量,一开始的目的就是来做日志传输的收集的
- kafka不支持事务,对消息的丢失,错误没有太严格的要求
- 高并发业务场景很好有用到事务的
kafka的特点
一、kafka高性能的原因
- 消息分区:不受单台服务器的限制,可以不受限的处理更多的数据
- 顺序写:顺序写磁盘,可以提供磁盘的利用率
- Page Cache:来提升吞吐量
- zeroCopy
- 后台的异步操作,主动Flush
- 预读的策略,IO的调度
- 消息压缩:减少磁盘IO和网络IO
- 分批发送:将消息打包批量发送,减少网络开销
Page Cache
- Page Cache是OS实现的一种主要的磁盘缓存机制,以此来减少对磁盘I/O的操作
- 将磁盘文件缓存到内存中(MySQL->Redis)
- 如果要从磁盘中读取1.txt,OS不是直接到磁盘而是到PageCache,如果PageCache里有就拿走了,如果没有就向磁盘发出请求,通过I/O获取数据,获取数据后先放入PageCache然后再给需要的请求(操作系统的页缓存是4kb)
- 写入数据的时候先判单PageCache里有没有,没有先写入PageCache,然后OS将PageCache的数据刷到磁盘中(MySQL-Redis,先写MySQL后写Redis)
ZeroCopy(零拷贝)
零拷贝其实就是将磁盘文件主机copy到内存中传输给socket而省去中间在磁盘内存中来回拷贝复制的过程,降低了上下文切换的过程,大大提高了应用程序的性能
文章来源:https://blog.csdn.net/Hi_alan/article/details/135788840
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!