MST

星途 面试题库

面试题:消息队列之Kafka在微服务架构中的基础使用

在微服务架构中使用Kafka开发消息通信机制,简要描述Kafka的生产者和消费者的主要工作流程是什么?
49.4万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

Kafka生产者主要工作流程:

  1. 消息创建:应用程序创建要发送的消息,消息由键(可选)、值和一些元数据组成。
  2. 序列化:将消息对象转换为字节数组,以便在网络上传输。Kafka提供了多种序列化器,如StringSerializer、ByteArraySerializer等。
  3. 分区选择:根据消息的键或分区器策略,决定消息要发送到哪个分区。如果消息没有指定键,生产者会使用轮询策略将消息均衡分配到各个分区。
  4. 发送:生产者将序列化后的消息发送到Kafka集群的一个或多个broker。生产者可以选择同步发送(等待broker确认)或异步发送(不等待确认继续执行)。
  5. 确认与重试:如果是同步发送,生产者等待broker的确认。如果broker返回成功响应,消息发送成功;如果返回错误,生产者可以根据配置进行重试。异步发送时,生产者通过回调函数来处理发送结果。

Kafka消费者主要工作流程:

  1. 订阅主题:消费者向Kafka集群声明要消费的主题,可以订阅单个主题或多个主题。
  2. 分配分区:Kafka集群的协调器(Coordinator)为每个消费者分配要消费的分区。分配策略确保每个分区在同一时刻只被一个消费者组中的一个消费者消费。
  3. 拉取消息:消费者定期向分配到的分区所在的broker发送拉取请求,获取消息。拉取请求中包含要拉取的分区、偏移量(offset)等信息。
  4. 反序列化:消费者接收到的是字节数组形式的消息,需要使用相应的反序列化器将其转换为应用程序能处理的对象。
  5. 处理消息:消费者对反序列化后的消息进行业务逻辑处理,如数据存储、数据分析等。
  6. 提交偏移量:消费者在成功处理消息后,需要向Kafka集群提交已消费消息的偏移量,标记该位置之前的消息已被成功处理。偏移量的提交方式可以是自动提交或手动提交。