Apache Kafka教程A系列:工作流程

本文介绍了Apache Kafka的消息传递系统工作原理,包括发布订阅(Pub-Sub)和队列消息传递两种模式。阐述了消息如何从生产者传递到消费者的流程,以及Zookeeper在Kafka集群中的协调作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:https://www.tutorialspoint.com/apache_kafka/apache_kafka_workflow.htm

截至目前,我们已经讨论了卡夫卡的核心概念。 现在让我们来看看Kafka的工作流程。

卡夫卡只是分成一个或多个分区的主题集合。 Kafka分区是消息的线性排序序列,每个消息由其索引标识(称为偏移量)。 Kafka集群中的所有数据都是不相关的分区联合。 传入消息写在分区的末尾,消费者依次读取消息。 通过将消息复制到不同的经纪商来提供耐久性。

Kafka以快速,可靠,持久的容错和零停机方式提供基于pub-sub和queue的消息传递系统。 在这两种情况下,制作者只需将消息发送到一个主题,消费者就可以根据他们的需要选择任何一种消息系统。 让我们按照下一节中的步骤来了解消费者如何选择他们选择的消息系统。

Pub-Sub消息传递的工作流程

以下是Pub-Sub Messaging的步骤明智的工作流程 - 

  • 生产者定期发送消息给一个主题。
  • 卡夫卡代理将所有消息存储在为该特定主题配置的分区中。它确保消息在分区之间平均分配。如果制作者发送两条消息并且有两个分区,则Kafka将在第一个分区中存储一条消息,并在第二个分区中存储第二条消息。
  • 消费者订阅特定主题。
  • 一旦消费者订阅了一个主题,Kafka将向消费者提供该主题的当前偏移量,并且还将该偏移量保存在Zookeeper集合中。
  • 消费者会定期请求卡夫卡(如100小时)收取新消息。
  • 卡夫卡收到生产者的消息后,会将这些消息转发给消费者。
  • 消费者将收到消息并进行处理。
  • 一旦消息被处理,消费者将向卡夫卡代理发送确认。
  • Kafka收到确认后,会将偏移量更改为新值并在Zookeeper中更新它。由于在Zookeeper中维护了偏移量,因此即使在服务器暴力期间,使用者也可以正确读取下一条消息。
  • 上述流程将重复,直到消费者停止请求。
  • 消费者可以随时选择倒带/跳到期望的主题偏移,并阅读所有后续消息。

队列消息/消费者组的工作流程

  • 在队列消息系统而不是单个消费者中,具有相同组ID的一组消费者将订阅主题。 简而言之,订阅具有相同组ID的主题的消费者被视为单个组,并且消息在他们之间共享。 让我们检查一下这个系统的实际工作流程。
  • 生产者定期向主题发送消息。
  • Kafka将所有消息存储在为特定主题配置的分区中,类似于之前的场景。
  • 单个消费者订阅特定主题,将Group ID设为Group-1。
  • Kafka与Pub-Sub Messaging一样与消费者进行交互,直到新消费者订阅同一主题Topic-01,其Group ID与Group-1相同。
  • 一旦新消费者到达,卡夫卡将其操作切换到共享模式并在两个消费者之间共享数据。这种共享将持续到用户数量达到为该特定主题配置的分区数量。
  • 一旦消费者数量超过分区数量,新消费者将不会收到任何进一步的消息,直到现有的任何消费者退订。这种情况的出现是因为卡夫卡的每个消费者都将被分配至少一个分区,并且一旦所有分区被分配给现有消费者,新消费者将不得不等待。
  • 这个功能也被称为消费群。以同样的方式,卡夫卡将以非常简单和有效的方式提供这两个系统中最好的。

ZooKeeper的角色
Apache Kafka的关键依赖是Apache Zookeeper,它是一个分布式配置和同步服务。 Zookeeper作为卡夫卡代理和消费者之间的协调接口。 卡夫卡服务器通过Zookeeper集群共享信息。 Kafka在Zookeeper中存储基本元数据,例如有关主题,代理,消费者偏移量(队列读取器)等的信息。

由于所有关键信息都存储在Zookeeper中,并且它通常在整个集群中复制这些数据,因此Kafka broker / Zookeeper的故障不会影响Kafka集群的状态。 一旦Zookeeper重新启动,Kafka将恢复状态。 这给Kafka带来零停机时间。 卡夫卡代理之间的领导者选举也是通过在领导失败的情况下使用Zookeeper完成的。

要了解Zookeeper的更多信息,请参阅 zookeeper

让我们继续进一步讨论如何在下一章安装Java,ZooKeeper和Kafka。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值