【发布时间】:2021-03-25 02:35:46
【问题描述】:
我有一个在多个 pod 上运行并在流量增加时横向扩展的应用程序。该应用程序的功能之一是“它从 Kafka 中挑选消息并触发电子邮件”。
当多个 pod 运行时,它们都会触发电子邮件,因为所有 pod 都应该按照设计接收消息。
如何限制电子邮件功能一次在任何一个 pod 上工作?
集群 - EKS ,编程语言 - Scala AKKA
【问题讨论】:
-
当消费者处理消息时,消息不会从其主题中删除。相反,消费者可以从多种方式中选择让 Kafka 知道哪些消息已被处理。这个过程称为提交偏移量。因此,一旦您从 list 获取消息,您需要立即提交 offset 以便其他消费者将收到以下消息
-
“限制电子邮件功能一次只能在任何一个 pod 上工作”到底是什么意思?
-
@LeviRamsey 表示所有 pod 上都有电子邮件触发功能,但只有一个 pod 应该执行它。
-
@Pranav 如果只有一个 pod 触发了电子邮件,其他 pod 会做什么?使用消费者组可以保证一些邮件被 pod1、podx 等触发,从而分担工作量。这样,同一封邮件就不会被多个 Pod 触发。
-
@JavaTechnical 问题在于 Pod 还提供有关与前端应用程序的 Web 套接字连接的实时数据,并且前端应用程序连接到任何一个 Pod。所以来自 kafka 的数据应该被所有的 Pod 获取。实际上,相同的数据也是通过电子邮件以合并的形式推送的,
标签: kubernetes apache-kafka akka