我正在使用微服务架构构建我的第一个应用程序。我将主要使用 Flask 在 Python 中工作。
我正在考虑实现事件/消息总线来协调服务之间的操作。我打算实现的一些服务是:Auth、Users、Posts 和 Chat。该应用程序有两个实体(“用户”和“组”),几乎每个服务都使用它们。我为每个服务都有一个单独的数据库,每个数据库都有自己的users表groups来管理特定于该服务的用户/组数据。现在,当我考虑创建新用户之类的事件时,每个服务都需要在表中创建一个新条目users,这就是我考虑使用事件总线的原因。
我阅读了这篇文章,其中讨论了 CQRS 和使用 HTTP (REST) 进行服务之间的外部通信,同时使用事件总线进行内部通信。服务处理 (HTTP) 请求,并发出有关数据更改的事件(例如,通过 Auth 服务创建新用户)。其他服务使用可能触发其他进程(和更多事件)的事件。
我困惑的是如何实际实现(在 Python 中)一个服务,该服务侦听 HTTP 请求以及一组订阅通道中的新事件。我知道您需要使用像 redis/rabbitMQ 这样的工具,但是是否可以在同一进程中处理两种类型的请求,或者您是否需要运行两个服务器(一个用于 REST 请求,另一个用于事件处理)?
另外,如果您对上述一般方法/架构有任何意见,我洗耳恭听。