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

时间:2020-10-22 11:53:56

标签: java amazon-web-services rest microservices

这个问题已经困扰了我一段时间,当我找到解决方案时,我似乎无法理解其逻辑。

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

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

我的简短问题:
这在数据库中的外观如何?
委员会服务如何访问用户服务并将用户保存到委员会?
在用户微服务上删除用户时会发生什么?

1 个答案:

答案 0 :(得分:0)

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

一开始,执行此操作对您来说可能会感到恐惧,但如今,所有非常支持互联网的社区每天都在帮助并提出新的解决方案,这并不困难。 如果您在春季启动中将Java用于微服务,那么可以使用Apache Kafka,Hazelcast(非常划算)之类的解决方案。 如果您将NodeJS用于微服务,那么NATS是我最近使用的库之一。