Kafka 必知必会
以下是结合业务场景的Kafka能力矩阵,帮你明确后续学习方向:
一、核心能力分层(按优先级排序)
- 生产者可靠性(必会)
- 事务消息(Exactly-Once语义)
- 批量发送与异步提交
- 消息压缩算法选择(GZIP vs Snappy)
- 错误重试策略(Backoff机制)
- 消费者高级特性(必会)
- 消费者组再平衡原理
- 手动提交offset的最佳实践
- 并行消费(分区分配策略)
- 偏移量管理(Earliest/Latest/Custom)
- 集群运维能力(必会)
- 主题分区数设计原则(根据吞吐量计算)
- 副本因子与ISR机制
- Broker节点故障处理(脑裂预防)
- 日志清理策略(log retention配置)
二、业务场景适配(分行业举例)
- 电商场景
- 订单事件溯源(Kafka Streams实现状态机)
- 库存分布式锁(通过Kafka事务+Redis实现)
- 支付结果异步通知
- 物联网场景
- 设备数据流处理(Connect集成InfluxDB)
- 流量削峰填谷(Kafka缓冲层设计)
- 设备离线消息缓存
- 日志分析场景
- ELK日志收集系统对接
- 日志主题动态扩缩容
- 实时告警流处理
三、工程优化关键点
- 性能调优指标
- 生产者TPS压测(batch.size/linger.ms/Lock等待时间)
- 消费者拉取延迟监控(ConsumerFetchMetrics)
- Broker磁盘IO优化(log.flush.interval.messages)
- 可靠性设计
- 端到端Exactly-Once方案(Kafka事务+数据库事务)
- 死信队列设计(DLQ主题处理失败消息)
- 消息幂等性实现(业务ID去重)
四、学习路线建议
- 必做实验项目
- 构建高可用集群(3 Broker + ZK)
- 生产者限流配置(通过client.id限流)
- 消费者组故障模拟(kill Broker观察再平衡)
- Kafka Connect集成(连接MySQL到Kafka)
- 进阶方向
- Kafka Streams实现实时聚合(WordCount升级版)
- Kafka MirrorMaker跨集群同步
- KRaft新架构学习(替代ZK)
五、面试/工作常考问题
- 设计一个日均百万级消息的系统,如何保证Kafka吞吐?
- 如果出现分区倾斜怎么解决?
- Kafka事务的隔离级别有哪些?
- 如何排查消费者拉取空数据的问题?
- 生产者突然断连,未提交的消息会丢失吗?
建议从当前业务出发,先选择一个具体场景(比如订单系统)设计Kafka架构,过程中遇到问题再针对性学习。同时关注Kafka官方博客和Confluent的案例库,保持对新特性的敏感度(如Kafka 3.0的物化视图)。