首页 > 解决方案 > 如何在谷歌云平台实现微服务 Saga

问题描述

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

那么有什么方法可以集成 Eventulate 或 Axon 以使用谷歌云 PubSub?谢谢

标签: microservicesgoogle-cloud-pubsubdistributed-transactionsaxonsaga

解决方案


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

有这个道理吗?命令、事件和查询具有不同的路由要求,应通过使用正确的工具来反映这些要求。

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

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

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

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

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


推荐阅读