Kafka 为什么那么快
kafka初衷 企业统一,高通量,低延迟。
Kafka 是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万 [2] 的消息。
支持通过Kafka服务器和消费机集群来分区消息。
支持Hadoop并行数据加载
生产快
producer ——> broker
分布式broker
存储快
broker ——>disk
简单说就是通过buffer控制数据的发送,有时间阀值与消息数量阀值来控制
不同于 Redis 和 MemcacheQ 等内存消息队列,Kafka 的设计是把所有的 Message 都要写入速度低、容量大的硬盘,以此来换取更强的存储能力。实际上,Kafka 使用硬盘并没有带来过多的性能损失,“规规矩矩”的抄了一条“近道”。
首先,说“规规矩矩”是因为 Kafka 在磁盘上只做 Sequence I/O (顺序写),由于消息系统读写的特殊性,这并不存在什么问题。关于磁盘 I/O 的性能,引用一组 Kafka 官方给出的测试数据(Raid-5,7200rpm):
Sequence I/O: 600MB/s (实验室)
Sequence I/O: 400MB-500MB/s (工作场景)
Random I/O: 100KB/s
1
2
3
所以通过只做 Sequence I/O 的限制&#