我有 2 个域对象:项目和契约(Contract)。一个项目可以有许多契约(Contract),因此在数据库中它被建模为经典的一对多关系。我们的问题是:您如何在微服务的上下文中对上述内容进行建模?你 (a) 有 2 个微服务 ProjectService 和 ContractService 吗?或 (b) 您是否有一项同时包含项目和契约(Contract)的 ProjectService?
我们认为答案 (a)(即 2 个微服务 ProjectService 和 ContractService)意味着必须调用 2 个服务来检索和保存完整的 Project 对象层次结构。另一方面,答案 (a) 将项目与契约(Contract)完全分离,这在理论上可能是一件好事,但实际上毫无用处,因为没有项目,契约(Contract)在逻辑上无法存在。
这里的正确方法是什么?答案(a)是纳米服务反模式的一个例子吗?
最佳答案
这取决于“项目”和“契约(Contract)”域的复杂程度。通过回答以下问题,我希望您能够做出正确的决定:
如果几乎所有问题的答案都是"is",那么继续使用 2 个微服务。我认为很可能不是。
关于soa - 微服务:如何建模相关领域对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34023438/