我有2个域对象:Project和Contract。一个项目可以有很多合同,所以在数据库中它被建模为一个典型的一对多关系。我们的问题是:你如何在微服务环境中对上述模型进行建模?你(a)有2个微服务ProjectService和ContractService吗?或(b)您是否有一个包含项目和合同的ProjectService?
我们认为答案(a)(即2个微服务ProjectService和ContractService)意味着必须调用2个服务来检索和保存完整的Project对象层次结构。另一方面,回答(a)将项目与合同完全分离,这在理论上可能是一件好事,但实际上没用,因为没有项目,合同就无法在逻辑上存在。
这里的正确方法是什么?答案是(a)纳米服务反模式的一个例子吗?
答案 0 :(得分:9)
这取决于复杂的“项目”和“合同”域名。通过回答以下问题,我希望您能够做出正确的决定:
如果几乎所有问题的答案都是“是”,那么继续使用2个微服务。我认为很可能不是。