一. 为啥用kafka
- 解耦
- 缓冲和削峰
- 减冗余(1个生产多个消费)
- 异步通信(先放数据/消息,需要时处理)
二. 高可用性
- zk保存kafka元数据(broker ID,topic,consumer信息)
注意:zk在kafka中,选举controller和检测broker存活 - 多副本增大系统容错性
三. 一致性
- 从consumer端利用HW
四. 快的原因
- 顺序写(磁盘随机写入时,需要进行寻址,移动磁头,耗时,顺序写不涉及)
- 0拷贝
- 压缩协议(gzip、snappy、Lz4)
- 批量处理(合并小的请求,已流的方式进行交互,直顶网络上限)
- pull模式(consumer需要时直接从brokers拉取数据,此时与消费端处理能力相符)
补充解释 零拷贝:摘自网络