在 Apache Kafka 中消息的消费和传递通过消费者与 Kafka 的分布式系统协作完成

Apache Kafka 中,消息的消费和传递是通过消费者(Consumer)与 Kafka 的分布式系统协作完成的。以下是消息传递的主要流程:

1. Producer 生产消息到 Kafka

  • 消息写入:Producer 将消息发送到指定的主题(Topic)。每个主题会分成多个分区(Partition)。
  • 分区分配:消息会根据某种分区策略(如轮询或基于 key 的哈希)写入特定的分区。

2. Consumer 消费消息

Kafka 中消费者的消息消费流程如下:

2.1 订阅主题

消费者通过 Kafka 客户端订阅一个或多个主题。它可以:

  • 直接订阅特定主题。
  • 使用正则表达式动态订阅匹配的主题。

2.2 消费者组 (Consumer Group)

  • 消费者组的概念:消费者可以加入一个消费者组,消费者组中的每个消费者负责消费部分分区的数据。
  • 分区分配
    • 分区独占性:同一消费者组内的每个分区只能被一个消费者消费。
    • 分配策略:Kafka 使用分区分配策略(如 Range、RoundRobin 或 StickyAssignor)将分区分配给组内消费者。

2.3 拉取消息

  • Pull 模式:Kafka 的消费者是以拉取模式(Pull)从 Broker 读取消息。
  • 偏移量控制:消费者从分区中读取消息的起始点由分区的偏移量(Offset)决定。
    • 默认情况下,消费者会从上次提交的偏移量开始消费。
    • 可以配置从最新或最早的消息开始消费。

2.4 消息处理

  • 消息反序列化:消费者将从 Kafka 中拉取的字节数据反序列化为应用程序可以处理的对象。
  • 业务逻辑:消费者应用程序根据业务需求处理这些消息。

2.5 提交偏移量

  • 自动提交:消费者定期自动将当前处理的消息偏移量提交到 Kafka。
  • 手动提交:应用程序可以选择手动提交偏移量以实现更精确的消费控制。
    • 手动提交适用于需要严格处理确保消息不丢失或重复的场景。

3. Broker 与消费者的交互

消费者与 Kafka 集群中的 Broker 通过网络通信进行消息消费:

  • 消费者协调器(Consumer Coordinator):每个 Broker 维护消费者组状态和分区分配信息。
  • 组再平衡(Rebalance):当消费者组成员发生变化(新增、减少或故障)时,Kafka 会触发重新分区分配。

4. 消费模型

Kafka 的消费模式具有以下特点:

  • 横向扩展:消费者组可以增加消费者以实现高吞吐量处理。
  • 可靠性:消费者通过手动提交偏移量可确保消息不丢失。
  • 灵活性:消费者可以随时重新消费历史数据(通过指定偏移量)。

这种设计使得 Kafka 消费者具备高吞吐量、可扩展性以及灵活性,适合处理分布式环境中的大规模实时流数据。

发布者:myrgd,转载请注明出处:https://www.object-c.cn/5146

Like (0)
Previous 2024年12月9日 下午2:43
Next 2024年12月9日 下午8:18

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信