2017-05-10 115 views
0

考虑一个“dockerized”应用程序,它会消耗一个单独的 kafka主题,并且会在其他应用程序使用的许多kafka主题上生成,我们称之为这些服务。如何在消费相同的kafka主题时复制微服务?

应用程序通过在其唯一的消费者主题中生成消息来查询服务。

查询消息由头部和有效载荷组成。除此之外,标题包含应该生成响应的主题信息。

服务产生一个响应并将其发送给完成请求周期的应用程序使用者主题。

消费者和生产者在启动时设置并发送“ping”消息来初始化/授权主题生产者。

所有的作品都非常适合单个docker实例。

现在我想扩大双方,并能够运行应用程序和服务的几个码头实例。

考虑到响应必须始终到达负责请求的应用程序实例,主题名称和分区复制方面的最佳方法是什么?

回答

0

我不会在这里讨论分区问题,因为这归结于您自己对排序​​的要求,我无法真正推断出足够的信息来进行任何有教育意义的猜测。

关于水平缩放您的消费者/生产者,我希望可以提供帮助。

简单的方法: 你提到你的邮件上有一个标题,我会包含额外的元数据,比如“SENDER”。将所有消息发布到单个主题,但将每个服务注册为使用者组 - 使用服务名称。

如果您的服务收到一条不适合它的消息(正在检查SENDER,请确认)。否则,处理该消息。

+0

感谢您的回答。所以每个消费者都会有一个ID,并检查是否为他们提供了答复。但在这种情况下,我们是不是在消耗n(实例数)次?这会有效吗?你提到的很简单,什么是更难的方法? :D谢谢 – brunofitas

+0

您可以使用Docker容器的ID并创建一个新的主题,以便在每次扩展时接收......然后您永远不会碰到任何冲突。你需要找到清除冗余主题的方法。 – Rawkode

相关问题