微服务与使用REST的内聚之间的通信



这个问题在我脑海中已经存在了一段时间,当我找到解决方案时,我似乎无法理解其中的逻辑。

交易如下:我目前正在开发一个简单的应用程序,该应用程序已拆分为2个微服务。该应用程序与管理软件Trello的任务非常相似。有一个微服务专门用于存储用户信息(用户服务(另一个微服务负责Boards(Boards持有列表,列表持有任务,但这与我的问题无关(。这两个微服务都使用自己的数据库。所有这些都将托管在AWS上,代码是用Java编写的,我使用Hibernate生成数据库。

我的问题:我如何使用用户服务并让多个用户实体使用Board?我理解使用多对多表的做法,该表将BoardId和UserId存储在一起,但如果我删除连接到板的用户,会发生什么。用户数据库中的User和板存储的userId之间没有逻辑连接。(一个用户可以在多个板上签名,反之亦然(

简而言之,我的问题是:
这在数据库中看起来怎么样?
Board服务如何访问User服务并将Users保存到Board
当我在用户微服务上删除用户时会发生什么?

这似乎是一个典型的微服务通信相关问题。根据我的知识和经验,有一个解决方案,即在架构中引入一个消息代理,它可以对事件执行操作,比如USER_DELETED事件可以传递给板微服务,该服务将处理板相关的数据库更改。

一开始,实现这一点可能会让你感到害怕,但如今,所有非常支持的互联网社区每天都在帮助并提出新的解决方案,这并不难。如果您正在使用带有spring boot的Java微服务,那么就有像Apache Kafka、Hazelcast这样的解决方案(非常划算(。如果您将NodeJS用于微服务,那么NATS是我最近使用的库之一。

最新更新