微服务:API 调用与消息传递。何时使用?

use*_*934 4 rest messaging message-queue apache-kafka microservices

我知道消息系统是非阻塞且可扩展的,应该在微服务环境中使用。

我质疑的用例是:

想象一下,有一个管理仪表板客户端负责发送 API 请求来创建 Item 对象。有一个微服务提供 API 端点,该端点使用应存储项目的 MySQL 数据库。还有另一个微服务使用弹性搜索来进行文本搜索。

该管理仪表板客户端是否应该:

A.发送2个API调用;1 调用MySQL服务和另一个elasticsearch服务

或者

B. 发送消息到主题以供MySQL 服务和elasticsearch 服务使用?

考虑 A 或 B 时,各有哪些优缺点?

我认为当只有 2 个微服务正在使用这个主题时,这有点矫枉过正。此外,管理员创建 Item 对象的频率非常小。

Joh*_*nny 5

就像软件架构中的许多事情一样,这取决于。您的要求、SLA 和业务需求应该更加清晰。

正如您所指出的,消息传递系统不会阻塞并且更具可扩展性,但是 API 通信也有其优点。

一般来说,REST API 最适合请求/响应交互,其中客户端应用程序通过 HTTP 向 API 后端发送请求。

消息流最适合在发生您可能想要采取操作的新数据或事件时发出通知。

在您的具体情况下,我会选择具有更高可扩展性和非阻塞性的消息传递系统。