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

标签 java amazon-web-services rest microservices

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

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

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

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

最佳答案

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

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

关于java - 微服务之间的通信和使用 REST 的内聚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64481670/

相关文章:

rest - 带通知的 PayPal REST API

javascript - 当某个延迟部分(例如 setTimeout 或 process.nextTick)中发生异常时,使用 J2V8 的 Java 应用程序会崩溃

java - 如何使用 RowFilter 筛选出 JTable 的行

java - 在java中维护排序集合,具有索引访问

amazon-web-services - 在 Apache Velocity 模板语言中追加字符串变量

swift - 使用 Swift 验证 AWS Cognito token

c# - 我应该如何在 Windows Phone 7 上使用 RestSharp 实现 ExecuteAsync?

java - 使用 Python 读取 AVRO 文件

amazon-web-services - AWS Ingress Controller 似乎忽略了主机名规则

json - 无法修复 Active Record 挂起的迁移错误