Kafka 是分布式流处理平台的核心基础设施,在大数据架构中扮演着消息队列和事件存储的双重角色。理解 Kafka 的内部机制对于构建可靠的数据管道至关重要。
架构概览
Kafka 的核心架构由 Broker、Topic、Partition 和 Consumer Group 组成。每个 Topic 被划分为多个 Partition,分布在不同 Broker 上,实现数据的并行处理和高可用。
关键设计
顺序写入与零拷贝
Kafka 的高吞吐量得益于两个关键设计:顺序写入磁盘(避免随机寻道)和零拷贝技术(减少数据从内核态到用户态的拷贝)。这使得 Kafka 即使在普通硬件上也能达到百万级 TPS。
消费者组与再平衡
Consumer Group 实现了发布-订阅模式下的负载均衡。当一个消费者加入或离开组时,会触发 Rebalance,重新分配 Partition。需要注意:
- 避免频繁 Rebalance 导致消费暂停
- 使用 CooperativeStickyAssignor 减少迁移
- 合理设置 session.timeout 和 heartbeat.interval
生产环境最佳实践
- Partition 数量建议等于消费者数量
- 设置 min.insync.replicas = 2 保证可靠性
- 开启幂等生产者避免重复消息
- 合理配置日志保留策略
- 监控 Under-Replicated-Partition 指标
掌握 Kafka 的内部机制,才能在架构设计中做出正确的权衡。