Web services 一个服务是否应该直接访问另一个服务的数据?

Web services 一个服务是否应该直接访问另一个服务的数据?,web-services,architecture,microservices,Web Services,Architecture,Microservices,我正在为一家使用微服务的小公司实现一个小型web后端系统,但每个服务共享一个中央数据库 假设我有一个订单服务和一个发票服务。如果我的发票服务必须读取(而不是修改)一些涉及订单的数据,它应该直接访问订单数据库数据,还是应该向订单服务发出HTTP请求(订单服务反过来访问数据库) 哪一种设计架构更明智 以下是我的想法: 如果它发出HTTP请求,则每个服务都会更加隔离,因为它不会触及另一个服务“拥有”的数据 如果它直接从数据库读取数据,那么它就更加独立,可以独立部署。如果Orders服务失败,Invoi

我正在为一家使用微服务的小公司实现一个小型web后端系统,但每个服务共享一个中央数据库

假设我有一个订单服务和一个发票服务。如果我的发票服务必须读取(而不是修改)一些涉及订单的数据,它应该直接访问订单数据库数据,还是应该向订单服务发出HTTP请求(订单服务反过来访问数据库)

哪一种设计架构更明智

以下是我的想法:

如果它发出HTTP请求,则每个服务都会更加隔离,因为它不会触及另一个服务“拥有”的数据

如果它直接从数据库读取数据,那么它就更加独立,可以独立部署。如果Orders服务失败,Invoice服务仍然可以运行并正常工作(至少对于依赖于该Orders数据的零件)


该操作是只读的。很想听听你的想法。

微服务通常需要拥有自己的数据,因此它们应该独占使用(在查询和写入方面)所使用的数据库

直接从DB读取数据并不能使它们独立部署:at实际上使它们的部署相互依赖,因为改变一个服务使用数据的方式往往需要改变和重新部署另一个服务

诚然,服务之间的请求/响应交互意味着时间耦合(它们必须同时运行)。通过将Orders服务中的更改发布到Invoice服务,并让Invoice服务在Invoice服务的数据库中维护其订单信息视图,您可以移除该耦合并使这两个服务实际上是独立的。数据库中的更改数据捕获对此非常有用