Postgresql 如何从我的微服务A';s将数据库发帖到微服务B
我创建了四个微服务。第一个服务只处理登录模块(A)的注册,第二个服务有发布和评论模块(B),第三个服务有评级和审核模块(C)和管理模块(D) 问题 所有的微服务都有自己的数据库,但服务B依赖于服务A的数据库。服务C依赖于B和A的DB,服务D也依赖于服务A、B、C。我对所有服务A、B、C使用postgres DB 选项1。 我可以使用JDBC连接工厂并将服务B连接到数据库,但这不是一个好的做法,因为如果服务A更改了它们的列,那么我们必须更改服务B模块 选项2。Postgresql 如何从我的微服务A';s将数据库发帖到微服务B,postgresql,spring-boot,microservices,Postgresql,Spring Boot,Microservices,我创建了四个微服务。第一个服务只处理登录模块(A)的注册,第二个服务有发布和评论模块(B),第三个服务有评级和审核模块(C)和管理模块(D) 问题 所有的微服务都有自己的数据库,但服务B依赖于服务A的数据库。服务C依赖于B和A的DB,服务D也依赖于服务A、B、C。我对所有服务A、B、C使用postgres DB 选项1。 我可以使用JDBC连接工厂并将服务B连接到数据库,但这不是一个好的做法,因为如果服务A更改了它们的列,那么我们必须更改服务B模块 选项2。 我可以创建我的服务A和服务B的热备份
我可以创建我的服务A和服务B的热备份副本,但这里的问题是只读的,我无法执行更新n删除。您应该设计您的微服务,使它们不需要依赖于其他微服务。否则它看起来像是分散的整体。无论依赖关系是建立在微服务级别还是任何类型的数据库链接上,正如您的两个选项所建议的那样 IMHO清洁溶液为:
在这个模型中有很多冗余,但是它很健壮,而且更接近真正的分布式系统。我们在我们的大型fintech平台中成功地使用了它。只需在服务A中公开API,并从服务B调用此API即可获取数据。您可以在服务A中的postgres上使用缓存以获得更好的性能。您是否阅读了每个服务的
数据库
和Sagas
模式?回答得很好。我想补充两点:1。保留数据副本的服务不需要保留精确的副本,只需要保留他们感兴趣的部分。2.请意识到,这些副本本质上只是服务不拥有的数据缓存。永远不要更新服务不拥有的数据(除非拥有服务的服务说它已更改)。多亏了你们@Tomas