一、Kafka 基础概念(1–40)
- Kafka 是什么?主要解决什么问题?
- Kafka 与传统消息队列(RabbitMQ、ActiveMQ)有什么区别?
- Kafka 的核心组件有哪些?
- 什么是 Topic?
- 什么是 Partition?
- 为什么 Kafka 采用 Partition?
- Partition 的数量会影响什么?
- Kafka 的消息是如何存储的?
- 什么是 Offset?
- Offset 在消费者端是如何维护的?
- Kafka 的消息是否可以被修改?
- Kafka 的消息能被删除吗?
- Kafka 的消息是有序的吗?
- Kafka 的副本机制是怎样的?
- 什么是 Leader 和 Follower?
- Leader 是如何选举出来的?
- Kafka 为什么需要 ZooKeeper?
- Kafka 3.0 以后还需要 ZooKeeper 吗?
- 什么是 Controller?
- Kafka 的 Broker 是什么?
- Broker 崩溃后会怎样?
- Topic 可以动态增加 Partition 吗?
- Partition 扩容后消息顺序会怎样?
- Producer 是怎么决定消息发往哪个 Partition 的?
- 什么是 Keyed Message?
- Kafka 的 ACK 有哪几种模式?
- ACK=0、1、-1 的区别是什么?
- Kafka 的消息是推模式还是拉模式?
- Consumer Group 是什么?
- 同一个 Consumer Group 里多个消费者如何分配分区?
- Rebalance 是什么?
- Rebalance 什么时候触发?
- Kafka 如何保证消息顺序?
- Kafka 如何保证消息不丢失?
- Kafka 如何保证消息不重复?
- Kafka 如何实现 Exactly Once?
- Kafka 的幂等性 Producer 是如何实现的?
- Kafka 的事务机制(Transaction)如何工作?
- Kafka 的 Retention 策略有哪些?
- Kafka 的 Compaction 是做什么的?
二、Kafka Producer 原理与调优(41–80)
- Producer 的发送模式有哪几种?
- 同步发送与异步发送的区别?
- KafkaProducer 内部线程模型?
- RecordAccumulator 是什么?
- Batching 是怎么做的?
- linger.ms 参数的作用?
- batch.size 参数的作用?
- buffer.memory 参数作用?
- max.in.flight.requests.per.connection 有什么用?
- acks 参数会影响性能吗?
- retries 和 retry.backoff.ms 参数含义?
- max.request.size 是什么意思?
- 压缩(compression.type)有哪些算法?
- 不同压缩算法性能对比?
- 幂等 Producer 如何启用?
- 幂等 Producer 会影响性能吗?
- 幂等 Producer 的局限性?
- 事务 Producer 如何启用?
- Producer 发送失败如何重试?
- 如何处理消息发送超时?
- 生产者的缓冲区满了怎么办?
- KafkaProducer 是线程安全的吗?
- 发送高吞吐消息时如何调优?
- Kafka 的 TPS 能到多少?
- Kafka 写入磁盘性能为什么这么高?
- Kafka 的顺序写日志有什么优势?
- Zero Copy 是什么?
- Page Cache 在 Kafka 中的作用?
- Kafka 使用 mmap 吗?
- 为什么 Kafka 用 sendfile 而不是直接读写?
- KafkaProducer 如何确认发送成功?
- 如何监控 Producer 性能?
- Kafka 的拦截器(Interceptor)作用是什么?
- Producer 拦截器的执行顺序?
- 发送时消息大小过大如何处理?
- 发送延迟高的常见原因?
- 如何在高并发场景下保持低延迟?
- 如何设计 Producer 的重试机制?
- Producer Metrics 中最重要的指标有哪些?
- 如何模拟 Producer 压测?
三、Kafka Consumer 原理与调优(81–120)
- Consumer 拉取消息的流程?
- Consumer 如何维护 offset?
- offset 提交的方式有哪些?
- auto.commit.interval.ms 是什么?
- enable.auto.commit=true 有什么风险?
- 如何实现手动提交 offset?
- 同一个 group 下两个 consumer 能消费同一个 partition 吗?
- 如果一个分区没有被消费,会怎样?
- Rebalance 是如何执行的?
- Rebalance 时消费者会暂停吗?
- Rebalance 会导致消息重复消费吗?
- 如何避免频繁 Rebalance?
- partition.assignment.strategy 参数的作用?
- StickyAssignor 和 RangeAssignor 区别?
- 消费延迟(lag)如何计算?
- Kafka 如何检测 Consumer 是否活着?
- session.timeout.ms 与 heartbeat.interval.ms 的关系?
- Consumer 挂掉后 offset 会怎样?
- Consumer offset 存储在哪里?
- __consumer_offsets 主题的结构?
- __consumer_offsets 是 compact topic 吗?
- 消费者如何处理反序列化失败?
- 如何实现批量消费?
- 如何提高消费速度?
- fetch.min.bytes 和 fetch.max.wait.ms 参数?
- max.partition.fetch.bytes 是什么?
- fetch.max.bytes 有什么限制?
- Consumer Metrics 哪些关键?
- Consumer 线程模型?
- 一个消费者能消费多个主题吗?
- Kafka 消费端幂等如何实现?
- 如何防止重复消费?
- 消费者断线重连机制?
- offset 丢失如何处理?
- KafkaConsumer 是线程安全的吗?
- 多线程消费的最佳实践?
- Rebalance 期间如何优雅暂停消费?
- 消费者组扩缩容对性能影响?
- 消费延迟高怎么排查?
- 消费者负载不均衡的原因?
四、Kafka 存储与日志管理(121–150)
- Kafka 消息在磁盘上的存储结构?
- log.segment.bytes 是什么?
- log.retention.hours 与 log.retention.bytes 的关系?
- Kafka 是如何清理老数据的?
- Delete 和 Compact 两种清理策略的区别?
- Compact 策略的底层实现?
- Kafka 文件命名规则?
- index 文件的作用?
- timeindex 文件的作用?
- offset.index 的结构?
- Kafka 如何通过 offset 快速定位消息?
- 文件刷盘机制?
- log.flush.interval.messages 作用?
- Kafka 数据是落盘才算“持久化”吗?
- Kafka checkpoint 是什么?
- recovery-point-offset 是干嘛的?
- Kafka 崩溃恢复流程?
- 如何检测数据是否损坏?
- Kafka 使用什么方式保证高可靠?
- Broker 启动慢的常见原因?
- Controller 在日志恢复中扮演什么角色?
- ReplicaFetcher 线程做什么?
- ISR 是什么?
- ISR shrink/expand 的条件?
- HW(High Watermark)与 LEO 的区别?
- 消费者读取消息时使用哪个 offset?
- Kafka 的副本同步机制?
- 数据复制是同步还是异步的?
- Kafka 如何处理副本落后太多的情况?
- 什么时候副本会被踢出 ISR?
五、Kafka 运维与监控(151–180)
- Kafka 常用监控指标有哪些?
- 如何查看某个 topic 的分区数?
- 如何调整副本因子?
- 如何手动重新分配分区?
- 如何查看 consumer lag?
- 如何强制 leader 选举?
- Controller 切换会影响性能吗?
- Kafka 日志存储路径?
- Kafka 日志目录下的文件结构?
- Kafka 常见内存配置项?
- JVM 调优参数推荐?
- Kafka 常见 GC 问题?
- 如何定位 Kafka 延迟问题?
- Kafka 吞吐下降的排查思路?
- Kafka 日志磁盘爆满怎么办?
- Broker 崩溃频繁的常见原因?
- Kafka 集群扩容步骤?
- 如何安全地减少 broker 数量?
- 如何备份 Kafka 数据?
- Kafka MirrorMaker 原理?
- MirrorMaker 2.0 改进点?
- Kafka Connect 的作用?
- 如何自定义 Sink Connector?
- Kafka Streams 与 Connect 区别?
- Kafka 的 JMX 监控指标有哪些?
- 如何与 Prometheus 集成?
- 如何可视化 Kafka 监控?
- Kafka 日志级别调整方式?
- 如何查看 Kafka Controller 日志?
- Kafka 常见运维命令有哪些?
六、Kafka 高级与架构设计(181–200)
- Kafka 如何保证消息的顺序性?
- 如何实现延迟队列?
- 如何实现消息回溯消费?
- 如何实现消息过滤?
- Kafka 与 Flink 的集成方式?
- Kafka 与 Spark Streaming 集成?
- Kafka 与数据库同步数据的方式?
- Kafka 如何实现高可用?
- Kafka 如何保证跨机房一致性?
- Kafka 集群跨地域部署注意事项?
- Kafka 集群的副本因子一般设置多少?
- 为什么不能所有分区副本都在同一台机器上?
- Kafka 高并发写入瓶颈在哪?
- Kafka 高并发消费瓶颈在哪?
- 如何设计百万 TPS 的 Kafka 集群?
- Kafka + Schema Registry 是什么?
- Kafka 如何与 Avro、Protobuf 集成?
- Kafka 为什么性能比 RabbitMQ 高?
- Kafka 的缺点有哪些?
- Kafka 在大规模生产环境中常见的坑?