二、Kafka的集群架构与工作流程
发布网友
发布时间:2023-07-10 08:51
我来回答
共1个回答
热心网友
时间:2023-07-12 09:06
(1)生产者定期向主题发送消息。
(2)Kafka 代理存储该特定主题配置的分区中的所有消息。 确保消息在分区之间平等共享。 如果生产者发送两个消息并且有两个分区,Kafka 将在第一分区中存储一个消息,在第二分区中存储第二消息。
(3)消费者订阅特定主题。一旦消费者订阅主题,Kafka 将向消费者提供主题的当前偏移,并且还将偏移保存在 Zookeeper 系统中。
(4)消费者将定期请求 Kafka 新消息。 Kafka 收到来自生产者的消息后,会将这些消息转发给消费者。
(5)消费者收到消息并进行处理后,便会向 Kafka 代理发送确认。
(6) Kafka 收到确认,将偏移更改为新值,并在 Zookeeper 中更新它。 由于偏移在 Zookeeper 中维护,消费者可以正确地读取下一封邮件,即使在服务器暴力期间。
(7)重复以上流程,直到消费者停止请求。消费者可以随时回退/跳到所需的主题偏移量,并阅读所有后续消息。
在队列消息传递系统,而不是单个消费者中,具有相同 Group ID 的一组消费者将订阅主题。这个消费者组被认为是单个组,并且消息在它们之间共享。
(1)生产者定期向某个主题发送消息。
(2)Kafka 代理存储该特定主题配置的分区中的所有消息。
(3)单个消费者订阅特定主题,假设为 Topic-01,Group ID 为 Group-1。
(4)Kafka 以与发布 - 订阅消息相同的方式与消费者交互,直到新消费者以相同的组 ID 订阅相同主题Topic-01 。
(5)一旦新消费者到达,Kafka 将其操作切换到共享模式,并在两个消费者之间共享数据。 此共享将持续,直到用户数达到为该主题配置的分区数。
(6)一旦消费者的数量超过分区的数量,新消费者将不会接收任何新消息,直到现有的一个消费者取消订阅。 出现这种情况是因为 Kafka 中的每个消费者将被分配至少一个分区,并且一旦所有分区被分配给现有消费者,新消费者将必须等待。
转自 W3Cschool的Kafka基本工作流程