Kafka速度快的原因
读写2方面:
写: tv_發財
1. 顺序存储:
- 顺序写入,去掉了比较耗费时间的磁盘寻址的过程,这个磁盘的顺序读写速度甚至超过内存的随机读写
- 顺序写入,jvm的GC效率低,内存占用大, 使用磁盘可以避免这个问题,相比(在内存中操作)
- 顺序写入,系统冷启动后,磁盘缓存依然可用 (linux对于磁盘的读写也有优化,比如磁盘缓存)
不删除数据:后的2种策略:
- 顺序写入一是基于时间。
- 顺序写入二是基于partition文件大小。
2. 分页存储:
- 数据写入不实时,利用现代操作系统的分页存储来利用内存提高IO效率.
Memory Mapped Files(后面简称mmap)也被翻译成 内存映射文件 ,在64位操作系统中一般可以表示
20G的数据文件,它的工作原理是直接利用操作系统的Page来实现文件到物理内存的直接映射。` 完成映射之后你对物理内存的操作会被同步到硬盘上(操作系统在适当的时候)
读: tv_呆
1. 零拷贝
Kafka使用零拷贝(Zero-Copy)技术来提供它的性能,所谓的零拷贝是指将数据直接从磁盘文件复制到网卡设备中,而
不需要经由应用程序之手,减少了内核和用户模式之间的上下文切换,零拷贝技术通过DMA技术实现。
2. 消息压缩
因为网络IO更可能成为瓶颈,所以利用少量的cpu资源进行压缩是有必要的
2.1、如果每个消息都压缩,但是压缩率相对很低,所以Kafka使用了批量压缩,即将多个消息一起压缩
而不是单个消息压缩
2.2、Kafka允许使用递归的消息集合,批量的消息可以通过压缩的形式传输并且在日志中也可以保持压
缩格式,直到被消费者解压缩
2.3、Kafka支持多种压缩协议,包括Gzip和Snappy压缩协议
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment