在 Apache Kafka 中,Producer 与 Consumer 各自承担什么职责?请描述消息从生产到被消费的完整流程,并说明其中涉及的关键机制。
考察说明
考查对 Kafka 基础角色及其消息流转过程的理解。
回答思路
- 【回答框架 1】Producer 负责将消息发布到指定的 Topic。它根据消息的 Key 或轮询策略选择分区,并将数据批量发送到该分区的主副本所在的 Broker。Producer 端支持分区器、压缩器和批次大小等参数调节吞吐与延迟。
- 【回答框架 2】Consumer 以消费者组为单位订阅 Topic,并按分区分配策略消费消息。组内每个分区同一时刻只被一个消费者实例消费,从而实现负载均衡;组内消费者增减时会触发 Rebalance 重新分配分区。
- 【回答框架 3】消息生产与消费的完整流程包括:Producer 序列化消息并选择分区,发送到 Broker 的日志段;Broker 持久化后向 Producer 返回确认。Consumer 从指定位移开始拉取消息,处理完成后提交位移,断点续传依赖位移提交机制。
- 【回答框架 4】可靠性由多副本同步与消费者位移共同保证:Producer 可设置 acks=all 等待所有同步副本确认;Consumer 可启用自动提交或手动提交位移,避免消息丢失或重复。
- 【回答框架 5】消费位置由 Consumer 维护的 Offset 决定,消息在 Kafka 中的保留时长或大小由 Broker 的保留策略控制,与 Consumer 是否消费无关。
- 【关键点 1】Producer 负责消息的分区选择、批量发送与可靠性确认;Consumer 通过消费者组实现分区订阅与负载均衡。
- 【关键点 2】消息流程包括序列化、分区、发送、Broker 持久化、拉取消费、位移提交。
- 【关键点 3】acks=all 结合副本同步可避免生产者侧消息丢失;位移提交决定消费语义。
- 【关键点 4】Realance 在组内成员增减时触发,可能导致短暂消费暂停。