我的微服务应该共享同一数据库还是通过消息传递服务进行通信

时间:2019-05-20 17:52:06

标签: node.js mongodb rabbitmq microservices message-queue

我正在寻找有关系统设计的一般指导。

我目前有两项服务:

  • 连接到Mongo数据库的供应商服务,该数据库包含特定的供应商数据并包括其twitterids
  • Twitter服务,没有数据库连接,但监听特定供应商的实时Twitter提要。一旦有新的推文,Twitter服务就会处理该推文,然后通过消息队列将其发送回供应商服务以进行存储。

问题:启动后,Twitter服务不知道该听什么供应商,因为它无法访问供应商的数据库。

我的解决方案:启动后,Twitter服务会向供应商服务发送一条消息,请求所有要收听的供应商Twitter ID的列表。供应商服务在收到消息后,将从数据库中获取所有供应商Twitter ID,并将列表通过消息队列发送回Twitter服务。然后,Twitter服务开始收听这些供应商的提要。

我的问题是,我的解决方案是否正确,还是Twitter服务更容易连接到mongo数据库。我认为解决方案的优点之一是,如果我想扩大Twitter服务的规模,则Vendor服务可以管理将哪个Vendor ID发送到Twitter服务以进行侦听。我不是完全确定任何其他意见都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

我认为,您所付出的一切都值得,因为您处在正确的轨道上。

通过Twitter服务询问供应商服务,您将获得以下好处:

  • 您可以在服务请求边界实施所有可能需要的访问控制
  • 您可以在供应商服务端更改数据库(或其他任何内容),而不会影响Twitter服务。
  • 如果供应商服务尚未运行,您仍然可以发送请求(根据启动顺序删除问题)。

听起来像你做得很好...继续前进。