JSRUN 用代码说话

工作流程

编辑教程

工作流程

到目前为止,我们讨论了Kafka的核心概念。 让我们现在来看一下Kafka的工作流程。

在 Kafka Workflow 中,Kafka 是主题的集合,它们被分成一个或多个分区,而分区是一系列消息,其中index标识每条消息(我们也称为偏移量)。但是,在 Kafka 集群中,所有数据都是分区的不相交联合。

传入消息出现在分区的末尾,因此消费者可以读取它们。此外,通过将消息复制到不同的代理,它可以保持持久性。

以非常快速,可靠,持久,容错和零停机的方式提供基于 Pub-sub 和队列的消息传递系统。此外,生产者将消息发送到主题,并且消费者可以根据他们的愿望选择任何一个消息系统。

Pub-Sub Messaging的工作流程

在 Apache Kafka 中,Pub-Sub Messaging 的逐步工作流程是:

Kafka Producers 定期将消息发送给主题。

Kafka Brokers 将所有消息存储在为该特定主题配置的分区中,从而确保在分区之间平均分配消息。例如,如果生产者发送两条消息并且有两个分区,则 Kafka 将在第一个分区中存储一条消息而在第二个分区中存储第二条消息。

此外,Kafka Consumer 订阅了一个特定主题。

消费者订阅主题后,Kafka 会向消费者提供主题的当前偏移量,并将偏移量保存在 Zookeeper 集合中。

此外,消费者将定期请求 Kafka,以获取新消息(如100 Ms)。

Kafka 将在收到生产者后立即将消息转发给消费者。

消费者将收到消息并进行处理。

然后 Kafka 经纪人收到已处理邮件的确认。

此外,一旦 Kafka 收到确认,就会更改偏移并将其更新为新值。即使在服务器暴动期间,消费者也可以正确读取下一条消息,因为 ZooKeeper 会维护偏移量。

但是,在消费者停止请求之前,流程会重复。

作为一种好处,消费者可以随时回放/跳过主题的任何偏移,并且还可以阅读所有后续消息,作为一个标准的愿望。

Kafka Queue消息/消费者组的工作流程

具有相同组 ID 的一组 Kafka 消费者可以在队列消息传递系统中订阅主题而不是单个消费者。但是,对于所有使用者具有相同的组 ID,订阅主题的用户被视为单个组并共享消息。该系统的工作流程是:

Kafka Producers 定期发送消息给 Kafka 主题。

与前面的场景类似,此处 Kafka 还会在为该特定主题配置的分区中存储所有消息。

此外,Kafka 中的单个消费者订阅了特定主题。

与 Pub-Sub Messaging 相同,Kafka与消费者交互,直到新消费者订阅同一主题。

随着新客户的到来,共享模式从操作开始,并在两个 Kafka 消费者之间共享数据。此外,在 Kafka 使用者的数量等于为该特定主题配置的分区数量之前,共享重复。

虽然,一旦 Kafka 消费者的数量超过分区数量,Kafka 的新消费者将不会收到任何进一步的消息。它发生在任何一个现有的消费者取消订阅之前。出现这种情况是因为在 Kafka 中存在一个条件,即每个 Kafka 消费者将至少有一个分区,如果没有分区保持空白,那么新消费者将不得不等待。

此外,我们还称其为 Kafka Consumer Group。因此,Apache Kafka 将以非常简单和有效的方式提供两种系统中的最佳系统。

ZooKeeper的作用

Apache Zookeeper充当Kafka代理和消费者之间的协调接口。可以说它是一个分布式配置和同步服务。基本上,ZooKeeper 集群与Kafka服务器共享信息。此外,Kafka 在 ZooKeeper Kafka中存储基本元数据信息,例如主题,代理,消费者偏移(队列读取器)等。

此外,Kafka Zookeeper / broker的故障不会影响Kafka集群。

这是因为存储在 ZooKeeper 中的关键信息会在其集合中复制。然后 Kafka 在 ZooKeeper 重新启动时恢复状态,导致 Kafka 零停机。然而,在领导失败的情况下,Zookeeper 还在 Kafka 经纪人之间进行领导选举。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟