首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >微服务通信JDBC与REST

微服务通信JDBC与REST
EN

Stack Overflow用户
提问于 2018-12-26 16:57:06
回答 4查看 2K关注 0票数 1

在这两种方法之间,允许两个微服务交换数据的最佳方法是哪种方式?

通过Rest呼叫。

2-每个微服务将其相关数据公开为数据库视图,以便其他微服务可以使用Spring模板或JPA访问它。

注意,每个微服务在同一个数据库模式中都有自己的(私有)表。

谢谢,

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-12-26 17:40:20

我想说的是,从领域驱动的设计角度来看(微服务可以被视为域),其他域不应该知道数据是如何存储/结构的(有界上下文)。因此,我将投票支持REST。另一个问题是,如果您的表/视图结构发生了更改,怎么办?这将导致其他微服务的急剧变化。使用REST,您可以更改路由的基本代码,而不会困扰您的用户。如果必须使用存储过程(或其他与数据库相关的性能调整)以获得更好的性能,则需要直接数据库查询。

票数 2
EN

Stack Overflow用户

发布于 2018-12-27 04:09:57

这个世界是不完美的,但是在一个完美的世界里,你的微型服务应该很少(如果有的话)直接彼此沟通。一种具有另一种知识的微服务将它们紧密地结合在一起,这比这种分布式体系结构更可取。这种耦合会影响CI/CD,降低容错能力,并在每个服务之外泄漏域信息。

在我们的系统中,唯一被(几乎)所有其他服务访问的微服务是授权服务,因此,如果需要,每个微服务都可以验证它接收到的凭据以执行特定的请求操作。服务之间的所有其他通信都是异步的,并通过集成总线(在本例中为RabbitMQ)传递。

在您提供的两个选项之间,REST可能更好,因为它至少在服务之间添加了一些抽象,但您可能会考虑仔细查看您的建模,看看是否可以减少服务之间的依赖,以消除需求。关于Auth0 这里关于依赖关系和这里的一篇像样的(虽然很老)的文章是一个很好的(很长的)讨论,它来自一个Spring项目负责人。

票数 1
EN

Stack Overflow用户

发布于 2018-12-26 17:25:25

那得看情况。

REST提供了两个服务之间更松散的耦合,通常是首选的方法。

如果您有许多查询,并且调用REST的性能可能是一个问题,那么数据库视图将是有意义的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53934850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档