java - 微服务之间的通信和使用 REST 的内聚

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

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

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

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

最佳答案

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

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

https://stackoverflow.com/questions/64481670/

相关文章:

html - 输入类型 "email"在:focus state时变为 "text"

reactjs - React craco tailwind postcss 集成

python - 如何为带有输入的代码编写单元测试 (Python)

reactjs - 如何使用代理将 Flask API 和 React 前端微服务部署到 Googl

authentication - Telegram 登录小部件因禁用跨站点 cookie 而损坏

git - 无法推送到 bitbucket 403 "authentication failed"

graphql - 在 Gatsby 上渲染 Contentful Reference (many)

reactjs - Stripe 参数_invalid_integer

java - 修改 tomcat 上静态 Assets 的 header cookie 并使用 ap

docker - 使用 .Net Core 3.1 api (docker) 运行 Heroku 时