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

Should my microservices share the same database or communicate via a messaging service

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

我目前有两个服务:

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

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

我的问题是,我的解决方案是否正确,或者只是让 Twitter 服务更容易连接到 mongo 数据库。我认为我的解决方案的一个优点是,如果我想扩展 Twitter 服务,供应商服务可以管理将哪个供应商 ID 发送到 Twitter 服务以进行监听。我只是不完全确定任何第二意见都会受到赞赏。

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

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

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

听起来你做的不错...继续。