微服务架构中的规范数据模型

Canonical data model in Microservice architecture

假设我有 2 个微服务(服务 A、服务 B),它们可以双向调用,假设如果 A 调用 B,那么 A 的响应 json 的某些参数将作为其他参数使用B

请求参数的参数

现在我意识到,使用规范数据模型可以更好地解决这个问题,这样每个服务 consume/produce 一个规范数据模型,

我的问题是在这种情况下 (json) 的规范模型应该是什么样子

假设 A 的响应看起来像

{
  "A1": false,
  "A2": {
    "width": 5,
    "height": 10
  },
  "A3": "A green door"
}

并且会有相应的 json 架构,我不包括在这里

B 的请求类似

{
      "B1": false,
      "B2": {
        "width": 5,
        "height": 10
      },
      "B3": "A green door",
      "B4": ""
       .
       .

    }

属性 A1 映射到 B1,如果我的规范数据模型仅包含具有某个名称的第一个属性(企业名称:例如 -->A1 是分数 B1 --> 报告,那么企业名称可能是 --> 积分) 通常与微服务相关,还是应该更多地是两者的聚合 json,每个属性都替换为相应的业务名称?

理论上,设计良好的微服务架构不需要 "traditional" 规范数据模型,因为每个服务都有其独特的责任域,并且仅对来自其特定域的数据建模。因此,当一个服务消费其他服务时,数据重叠应该是最小的。当使用其他服务时,数据建模责任在于源而不是消费者。

然而在实践中可能并非总是如此,例如您必须从相似但不相同的来源中提取数据。所以对于你的问题 - 如果你发现需要将服务的数据转换为规范模型,你可能希望尽快将转换为单一表示(你的第一个想法),而不是保留两种表示(你的第二个主意)。这将有助于简化下游的消费(想象一下需要检查数据结构中多个位置的混乱消费代码)。如果服务在您的控制之下,您可能希望首先将它们发展为在规范模型中提供数据。