构建基于消息队列的集成
Posted
技术标签:
【中文标题】构建基于消息队列的集成【英文标题】:Architecting a message queue based integration 【发布时间】:2020-12-16 11:21:57 【问题描述】:我们当前的旧系统是本地部署的。我们计划将我们的应用程序迁移到云端作为一个长期目标,但在此期间,我们需要将此旧系统与我们基于云的应用程序集成。
我们的目标:设计一种集成,使我们的旧系统能够与我们基于云的新应用程序进行通信。
我们的计划:我们将使用消息队列来实现我们的旧系统和云之间的松散耦合通信。
我们将在我们的旧系统上拥有一个消息代理实例,并在云上拥有另一个。我们最终将在云上创建几个不同的应用程序,所有这些应用程序都将与旧系统通信,但又与我们在云上的其他应用程序分离。
实现这一目标的最佳方法是什么?
我们:
-
我们的每个云应用程序是否都“连接”到云上的单个代理并以发布/订阅的方式接收消息?
我们的每个云应用程序都有专用队列,并让我们的云应用程序直接从它们的队列中读取这些消息。
我知道我的问题有点高级,因为它与系统设计有关,但同时我希望它也足够具体。欢迎任何意见或反馈。
【问题讨论】:
最后找到方法了吗? 【参考方案1】:我强烈建议您在做出技术基础架构决策之前退后一步,为您的架构制定战略:
-
业务:确定旧应用程序和新云应用程序中的不同子域(“组件”)及其相对重要性:核心、支持、通用。因此,您将优先考虑应该从旧版迁移的内容。
团队:如果您管理多个团队(您的情况可能是传统团队还是云团队?),请确保团队与子域 (Inverse Conway Maneuver) 保持一致,从而最大限度地减少协作摩擦。
COUPLING:定义不同子域之间的关系:谁是上游,谁是下游,什么是接口契约?
然后您可以开始考虑“管道”和不同的基础架构选项,以根据您的技术要求连接您的组件:同步、异步等。然后回到异步连接情况下的原始问题:通过消息队列代理与否?
这些幻灯片更深入地解释:Visualizing sociotechnical architectures with Context Maps。
如果这种架构方法引起您的共鸣,请查看Domain-Driven Design Starter Modelling Process 了解更多详细信息。
【讨论】:
以上是关于构建基于消息队列的集成的主要内容,如果未能解决你的问题,请参考以下文章