Kafka学习笔记(四)工作流程

Kafka学习笔记(四)工作流程

发布 - 订阅消息的工作流程:

1.生产者定期向主题发送消息。

2.Kafka代理存储为该特定主题配置的分区中的所有消息。 它确保消息在分区之间平等共享。 如果生产者发送两个消息并且有两个分区,Kafka将在第一分区中存储一个消息,在第二分区中存储第二消息。

3.消费者订阅特定主题。

4.一旦消费者订阅主题,Kafka将向消费者提供主题的当前偏移,并且还将偏移保存在Zookeeper系综中。

5.消费者将定期请求Kafka(如100 Ms)新消息。

6.一旦Kafka收到来自生产者的消息,它将这些消息转发给消费者。

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

8.一旦消息被处理,消费者将向Kafka代理发送确认。

9.一旦Kafka收到确认,它将偏移更改为新值,并在Zookeeper中更新它。 由于偏移在Zookeeper中维护,消费者可以正确地读取下一封邮件,即使在服务器暴力期间。

10.以上流程将重复,直到消费者停止请求。

11.消费者可以随时回退/跳到所需的主题偏移量,并阅读所有后续消息。

队列消息/用户组的工作流

在队列消息传递系统而不是单个消费者中,具有相同组ID 的一组消费者将订阅主题。 简单来说,订阅具有相同 Group ID 的主题的消费者被认为是单个组,并且消息在它们之间共享。

1.生产者以固定间隔向某个主题发送消息。

2.Kafka存储在为该特定主题配置的分区中的所有消息,类似于前面的方案。

3.单个消费者订阅特定主题,假设 Topic-01 为 Group ID 为 Group-1 。

4.Kafka以与发布 - 订阅消息相同的方式与消费者交互,直到新消费者以相同的组ID 订阅相同主题 Topic-01 1 。

5.一旦新消费者到达,Kafka将其操作切换到共享模式,并在两个消费者之间共享数据。 此共享将继续,直到用户数达到为该特定主题配置的分区数。

6.一旦消费者的数量超过分区的数量,新消费者将不会接收任何进一步的消息,直到现有消费者取消订阅任何一个消费者。 出现这种情况是因为Kafka中的每个消费者将被分配至少一个分区,并且一旦所有分区被分配给现有消费者,新消费者将必须等待。

7.此功能也称为使用者组。 同样,Kafka将以非常简单和高效的方式提供两个系统中最好的。

ZooKeeper的作用

Kafka的一个关键依赖是Apache Zookeeper,它是一个分布式配置和同步服务。 Zookeeper是Kafka代理和消费者之间的协调接口。 Kafka服务器通过Zookeeper集群共享信息。 Kafka在Zookeeper中存储基本元数据,例如关于主题,代理,消费者偏移(队列读取器)等的信息。
由于所有关键信息存储在Zookeeper中,并且它通常在其整体上复制此数据,因此Kafka代理/ Zookeeper的故障不会影响Kafka集群的状态。 Kafka将恢复状态,一旦Zookeeper重新启动。 这为Kafka带来了零停机时间。 Kafka代理之间的领导者选举也通过使用Zookeeper在领导者失败的情况下完成。

发布了29 篇原创文章 · 获赞 21 · 访问量 663

猜你喜欢

转载自blog.csdn.net/xueguchen/article/details/103700319