【发布时间】:2022-06-17 10:32:59
【问题描述】:
我已经开始使用微服务架构开发电子商务应用程序。每个微服务都有一个单独的数据库。现在,我知道我想使用 Node.js 微服务来处理产品并充当它们的搜索引擎。我计划有一个 Ruby on Rails 服务器微服务来处理所有请求,然后如果请求不打算由它处理(例如,请求是添加新产品),则使用 RabbitMQ 以某种方式发送此信息到Node.js 微服务,并让它执行操作。这是可接受的建筑设计还是我完全偏离了路线?
【问题讨论】:
我已经开始使用微服务架构开发电子商务应用程序。每个微服务都有一个单独的数据库。现在,我知道我想使用 Node.js 微服务来处理产品并充当它们的搜索引擎。我计划有一个 Ruby on Rails 服务器微服务来处理所有请求,然后如果请求不打算由它处理(例如,请求是添加新产品),则使用 RabbitMQ 以某种方式发送此信息到Node.js 微服务,并让它执行操作。这是可接受的建筑设计还是我完全偏离了路线?
【问题讨论】:
应该处理所有请求的 Ruby on Rails 服务器微服务(你可以做得更好)
A.为此,您需要一个反向代理。
B.您还需要一个 API 网关来管理身份验证和授权,以及处理请求的安全性、可追溯性、日志记录等。
对于 (A) 和 (B),您可以使用 Nginx 或 Kong
如果您想在微服务之间建立基于事件和/或异步的通信,请使用 RabbitMQ。这是一个简单的示例:每次用户确认订单时,OrderService 都会通知 ProductService 更新已订购产品的数量。
这里使用 RabbitMQ 的好处是 OrderService 不会在等待 ProductService 通知他是否收到信息,或者他是否更新数量时保持阻塞状态......他会移动打开并处理其他传入的请求。
【讨论】: