1.顺序读写
kafka 顺序读写快 & hbase 随机读写快
>>> kafka消息不断追加,可以充分利用磁盘的顺序读写性能
不需要硬盘磁头的寻道时间,只需要很少的扇区旋转时间,速度远快于随机
>>> hbase因为先找缓存,和HDFS比快
2.零拷贝
见:https://segmentfault.com/a/1190000023778797
在Linux kernel2.2后出现了一种叫做“零拷贝”的系统调用机制,就是跳过“用户缓冲区”的拷贝,建立一个磁盘空间和内存的直接映射,数据不再复制到“用户态缓冲区”
kfk调用的是FileChannel.transferTo,底层是sendFile
3.批量发送
kfk允许进行批量发送消息,producer发送消息的时候,可以将消息缓存本地,等到了固定条件发送到kfk
- 等消息条数到固定条数
- 一段时间发送一次
4.数据压缩
kfk还支持对消息集合进行压缩,Producer可以通过GZIP或Snappy格式对消息集合进行压缩
压缩的好处就是:减少传输的数据量,减轻对网络传输的压力
>>> 批量发送 和 数据压缩 一起使用,单条做数据压缩的话,效果不明显
5.分区
kafka的topic被分成了多个partition,每个partition分成多个segment,所以一个队列中的消息实际上是保存在N多个片段文件中。
1. 通过分段的方式,每次文件操作都是对一个小文件的操作,轻便。
2. 同时分区增加了并行处理能力/