让我说我有2个微服务(服务A,服务B)可以互相调用两种方式,让我们说如果A调用B那么A的响应json的一些参数将作为B的请求参数的一些其他参数被消耗
现在我意识到,通过使用Canonical数据模型可以更好地解决这个问题,这样每个服务都会消耗/生成规范数据模型,
我的问题是在这种情况下(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的聚合,每个属性都用相应的商业名称替换?
答案 0 :(得分:3)
理论上讲,#34;传统"由于每个服务都有其独特的责任域,并且只对来自其特定域的数据进行建模,因此精心设计的微服务架构不应该要求规范数据模型。因此,当服务消耗其他服务时,数据重叠应该是最小的。在使用其他服务时,数据建模的责任在于源而不是消费者。
然而在实践中并非总是如此,例如您必须从类似但不相同的来源提取数据。所以对你的问题 - 如果你发现需要改变服务'将数据转换为规范模型,您可能希望尽快执行单个表示(您的第一个想法)的转换,而不是保留两种表示(您的第二个想法)。这将有助于简化下游的消费(想象一下您需要检查数据结构中多个位置的混乱消费代码)。如果服务在您的控制之下,您可能希望将它们发展为首先在规范模型中提供数据。