微服务架构中的规范数据模型
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" 规范数据模型,因为每个服务都有其独特的责任域,并且仅对来自其特定域的数据建模。因此,当一个服务消费其他服务时,数据重叠应该是最小的。当使用其他服务时,数据建模责任在于源而不是消费者。
然而在实践中可能并非总是如此,例如您必须从相似但不相同的来源中提取数据。所以对于你的问题 - 如果你发现需要将服务的数据转换为规范模型,你可能希望尽快将转换为单一表示(你的第一个想法),而不是保留两种表示(你的第二个主意)。这将有助于简化下游的消费(想象一下需要检查数据结构中多个位置的混乱消费代码)。如果服务在您的控制之下,您可能希望首先将它们发展为在规范模型中提供数据。
假设我有 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" 规范数据模型,因为每个服务都有其独特的责任域,并且仅对来自其特定域的数据建模。因此,当一个服务消费其他服务时,数据重叠应该是最小的。当使用其他服务时,数据建模责任在于源而不是消费者。
然而在实践中可能并非总是如此,例如您必须从相似但不相同的来源中提取数据。所以对于你的问题 - 如果你发现需要将服务的数据转换为规范模型,你可能希望尽快将转换为单一表示(你的第一个想法),而不是保留两种表示(你的第二个主意)。这将有助于简化下游的消费(想象一下需要检查数据结构中多个位置的混乱消费代码)。如果服务在您的控制之下,您可能希望首先将它们发展为在规范模型中提供数据。