【问题标题】:How to implement microservice Saga in google cloud platform如何在谷歌云平台实现微服务 Saga
【发布时间】:2020-12-13 17:54:32
【问题描述】:

我正在研究在 GCP 的 K8S 托管平台中实现微服务 Saga 模式的解决方案。 有 2 个选项:Eventulate Tram 和 Axon。但是,这些框架似乎不支持由 google-cloud-Pubsub 等云提供商管理的消息代理,而我不想将 Kafka 或 RabbitMQ 部署到 K8S,因为 GCP 已经支持 PubSub。

那么有没有办法集成 Eventulate 或 Axon 以使用谷歌云 PubSub? 谢谢

【问题讨论】:

    标签: microservices google-cloud-pubsub distributed-transactions axon saga


    【解决方案1】:

    不确定 Eventuate 对此的看法,但 Axon 使用扩展作为消息代理而不是 Axon Server。在 Axon 的整个生命周期(阅读:过去 10 年)中,已经提供了其中一些,但目前没有一个用于 Axon 框架定义的所有类型的消息。因此,例如,您将无法使用 Kafka 在 Axon 中发送命令。

    这是为什么?命令、事件和查询具有不同的路由要求,应通过使用适合工作的工具来反映这些要求。

    在 Axon 方面更具体一点,以下扩展可用于分发您的消息:

    如您所知,目前没有可让您分发消息的 Pub/Sub 扩展程序。除此之外,我的直觉会告诉我如果它可用,那么由于 Pub/Sub 的意图是成为消息代理,它可能只用于事件消息。 p>

    幸运的是,这实际上使您自己创建这样的扩展变得相当简单。深入了解构建它的所有细节会有点多,所以我建议在实现这一点时先看看 Axon 的 AMQP 扩展。关于这个问题的提示是,为了发布,您应该添加一个组件来处理 Axon 的事件并将它们发布到 Pub/Sub 上。为了处理事件,您需要构建一个StreamableMessageSourceSubscribableMessageSource。这些接口分别由TrackingEventProcessorSubscribingEventProcessor 使用,它们又是负责处理事件处理技术方面的组件。

    顺便说一句,如果您要构建这样的扩展并且需要帮助,最好在 AxonIQ 论坛上提出请求,您可以找到 here

    最后一点,我想说的相当重要的是,这样的连接器不能处理所有类型的消息。如果您需要更完整的 Axon 应用程序以分布式方式运行,我强烈建议您先尝试 Axon Server,然后再从头开始构建您自己的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 2020-06-02
      • 2018-04-07
      • 1970-01-01
      • 2018-11-03
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多