【问题标题】:How to replicate microservices when consuming same kafka topic?使用相同的kafka主题时如何复制微服务?
【发布时间】:2017-10-09 03:26:56
【问题描述】:

考虑一个“dockerized”应用程序,它使用单个 kafka 主题并生成许多 其他应用程序使用的 kafka 主题,我们将这些主题称为服务。 p>

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

查询消息由标头和有效负载组成。除其他外,标头包含应生成响应的主题信息。

服务产生响应并将其发送到完成请求周期的应用程序消费者主题。

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

在单个 docker 实例上一切都很好。

现在我想扩展双方并能够运行应用程序和服务的多个 docker 实例。

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

【问题讨论】:

    标签: docker apache-kafka


    【解决方案1】:

    我不打算在这里谈论分区,因为这取决于您自己对排序​​的要求,我无法真正推断出足够的信息来对此做出任何有根据的猜测。

    关于横向扩展您的消费者/生产者,我希望能提供帮助。

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

    如果您的服务收到不适合它的消息(检查 SENDER,只是 ACK)。否则,处理消息。

    【讨论】:

    • 感谢您的回答。因此,每个消费者都会有一个 ID,并会检查响应是否适合他们。但是在这种情况下,我们不是在消费消息 n(实例数)次吗?那会有效吗?你提到简单,什么是更难的方法? :D 谢谢
    • 您可以使用 Docker 容器的 ID 并创建一个新主题以在每次扩展时接收...这样您就永远不会遇到任何冲突。不过,您需要找到清理多余主题的方法。
    猜你喜欢
    • 2019-07-20
    • 2021-10-04
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多