Kafka 是对日志文件进行 append 操作,因此磁盘检索的开支是较小的;同时
为了减少磁盘写入的次数,broker 会将消息暂时 buffer 起来,当消息的个数(或大小)达到
一定阀值时,再 flush 到磁盘,这样减少了磁盘 IO 调用的次数。
需要考虑的影响性能点很多多,除磁盘 IO 之外,我们还需要考虑网络 IO,这直接关系到
Kafka 的吞吐量问题。Kafka 并没有提供太多高超的技巧;对于 producer 端,可以将消息 buffer
起来,当消息的条数达到一定阀值时,批量发送给 broker;对于 consumer 端也是一样,批
量 fetch 多条消息。
因此启用消息压缩机制是一个良好的策略;压缩需要消耗少量的 CPU 资源。