【问题标题】:Microservice architecture communication with rabbitmq message broker与rabbitmq消息代理的微服务架构通信
【发布时间】:2022-06-17 10:32:59
【问题描述】:

我已经开始使用微服务架构开发电子商务应用程序。每个微服务都有一个单独的数据库。现在,我知道我想使用 Node.js 微服务来处理产品并充当它们的搜索引擎。我计划有一个 Ruby on Rails 服务器微服务来处理所有请求,然后如果请求不打算由它处理(例如,请求是添加新产品),则使用 RabbitMQ 以某种方式发送此信息到Node.js 微服务,并让它执行操作。这是可接受的建筑设计还是我完全偏离了路线?

【问题讨论】:

    标签: rabbitmq microservices


    【解决方案1】:

    应该处理所有请求的 Ruby on Rails 服务器微服务(你可以做得更好)

    A.为此,您需要一个反向代理。

    • 反向代理能够将每个传入请求转发到负责处理它的微服务。
    • 它还可以充当负载均衡器:它将传入的请求分配给许多服务(例如,如果您想部署同一服务的多个实例)
    • ...

    B.您还需要一个 API 网关来管理身份验证和授权,以及处理请求的安全性、可追溯性、日志记录等。

    对于 (A) 和 (B),您可以使用 NginxKong

    如果您想在微服务之间建立基于事件和/或异步的通信,请使用 RabbitMQ。这是一个简单的示例:每次用户确认订单时,OrderService 都会通知 ProductService 更新已订购产品的数量。

    这里使用 RabbitMQ 的好处是 OrderService 不会在等待 ProductService 通知他是否收到信息,或者他是否更新数量时保持阻塞状态......他会移动打开并处理其他传入的请求。

    【讨论】: