Architecture 每个数据模型的微服务

Architecture 每个数据模型的微服务,architecture,microservices,Architecture,Microservices,我有一个关于微服务的架构问题。我们有两个不同的数据源,两个表,其中有一些相似的字段,但它们之间没有连接。我们只想从这些数据中读取数据。根据每个源沿着其模型对象创建一个微服务是一种好的做法,还是用一个通用服务创建一个通用模型就足以提供数据?正确的答案是这取决于项目/产品和需求 微服务围绕业务能力进行安排。这提供了帮助开发人员使用它的服务上下文。通用服务没有此上下文 例如,为了简单起见,假设我们有两个表,一个是客户信息表,另一个是员工信息表。我们只是在看桌子上的书 微服务体系结构将为您提供两种服务,

我有一个关于微服务的架构问题。我们有两个不同的数据源,两个表,其中有一些相似的字段,但它们之间没有连接。我们只想从这些数据中读取数据。根据每个源沿着其模型对象创建一个微服务是一种好的做法,还是用一个通用服务创建一个通用模型就足以提供数据?

正确的答案是这取决于项目/产品和需求

微服务围绕业务能力进行安排。这提供了帮助开发人员使用它的服务上下文。通用服务没有此上下文

例如,为了简单起见,假设我们有两个表,一个是客户信息表,另一个是员工信息表。我们只是在看桌子上的书

微服务体系结构将为您提供两种服务,都带有读取操作

因此,如果愿意,开发人员将调用customer.listAll,例如employee.listAll。然而,背景是清楚的

使用通用服务可能会导致以下代码: service.listalcustomers。参数现在携带上下文。在具有大量不同类型/表的系统中,这可能成为调用的主要麻烦。通用服务不会具有特定而非通用的service.listCustomers或service.listEmployees

记住,一个不容易理解的API是不容易使用的,而一般的服务,虽然最初更容易构建,但最终会增加复杂性。维护而不是开发是软件中最长、最昂贵的部分

这涉及到另一点。将所有内容都包含在通用服务中意味着,如果客户服务中存在缺陷,我们也必须停止员工服务来修复它。该错误还可能影响这两个服务。微服务不受此影响,因为它允许您在不关闭应用程序的情况下关闭服务


需要记住的一点是,您可以使用通用模式来实现您的微服务。换句话说,员工和客户服务都可以在其操作中使用DOA模式。代码可以通过某种方式在他们之间共享,可能是一个库,但他们仍然是完全独立的。

非常感谢您提供的详细答案!