Kafka是大型架构核心,下面我详解Kafka高性能@mikechen
顺序写入
首先,顺序写入与零拷贝(sequential write & zero-copy)显著降低磁盘和内存开销。

Kafka 将消息追:加到磁盘文件的尾部,避免了随机写带来的寻址与碎片开销,使磁盘 I/O 更接近顺序吞吐极限。
配合操作系统提供的零拷贝机制(如: sendfile)。
Kafka 能够在不经过用户态多次复制的情况下,将数据从文件直接发送到网络,从而减少 CPU 占用与内存带宽消耗。
水平扩展
其次,分区与并行(partitioning & parallelism)提供了天然的水平扩展能力。

主题被划分为多个分区,每个分区在单个日志文件上顺序写入,客户端和服务端可以并行地写入不同分区.
充分利用多核 CPU、并发磁盘通道和网络带宽,提升整体写入吞吐量与伸缩性。
批量处理
第三,批处理与压缩(batching & compression),通过合并小消息与压缩传输数据来降低每条消息的元数据与协议开销。
生产者、与 Broker 支持将多条消息打包成批次发送。

并可对批次应用压缩算法(如 gzip、snappy、lz4),这不仅减少了网络包数与延迟。
还降低了磁盘写入的总量,进一步提高吞吐效率。
高效机制
最后,高效的副本复制机制(replication & ISR)在保证可靠性的同时兼顾性能。
Kafka 采用基于主从的复制模型,由分区的 leader 负责写入并驱动 follower 同步。

使用按批次的复制,与确认策略(ACKs 可配置)实现一致性与高可用。
通过将同步控制与磁盘顺序追加相结合,Kafka 能在保证数据安全的前提下,最大化写入并发与吞吐。