gpt4 book ai didi

architecture - 微服务的 SOA - 如何规范化/转换消息

转载 作者:行者123 更新时间:2023-12-04 05:10:06 25 4
gpt4 key购买 nike

我们正在开发采用消息模式和微服务来定义和运行业务流的解决方案。

它应该有这样的组件:

  • 用于启动事务的网关,具有给定的流 ID,
  • 用于存储规则的 BPM(应为给定流调用哪些服务)
  • 服务选择器 - 一种处理器,它接受来自网关的请求,获取流定义,然后一一调用适当的服务,
  • 功能服务。

  • 我们应该能够定义多个流,其中每个步骤都调用不同的服务。

    一项服务的输出可以输入另一项服务。问题是它们可以具有不同的模式,因此应该以某种方式对其进行转换/规范化。

    但是哪个部分应该负责做这样的改造呢?它应该是可配置的,因为我们希望在不重新部署的情况下添加新流。

    第一个想法是存储来自每个服务的响应,然后每个步骤都将使用 XSLT 转换从先前的响应中生成输入 xml。但这可能是配置 hell ,因为创建和测试这样的 XSLT 并不容易

    你有什么建议如何正确解决这个问题吗?

    最佳答案

    假设您有多个系统提供服务,请使用规范数据模型来避免在中间件中嵌入转换。 Here is a link to Gregor Hohpe's enterprise integration patterns site about canonical models .

    a Canonical Data Model that is independent from any specific application. Require each application to produce and consume messages in this common format.



    这个想法是有一个商定的标准,服务用于互操作。通常,每个提供服务的系统都有自己的内部数据模型,不同于规范模型。发生这种情况是因为更改遗留系统过于繁重,或者规范模型不适合系统的内部数据表示。然后每个系统单独负责将其内部模式转换为服务 I/O 的规范模型。

    每个系统团队都可以使用其想要的任何工具来执行转换:XSLT、Python 脚本、Java 或一些来自 Oracle 或 Microsoft 的 WYSIWYG 工具。结果是任何内部数据模型与规范模型不同的系统都必须执行某种映射。这是不可避免的。

    关于architecture - 微服务的 SOA - 如何规范化/转换消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206417/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com