何时在节点 REST API 中使用 rabbitMQ?
When use rabbitMQ in node REST API?
我开发了一个节点 sdk,它具有某些 REST API.These API 正在与 blockhchain 框架交互以进行读写操作。
在某些情况下,节点 sdk 上会收到许多请求。
因此,对于负载平衡,我使用 NGNIX
在另一个 instance.This 上再安装一个 sdk 副本,一切正常。
建议也使用 rabbitMQ
进行负载平衡。但是在我的 API 中, API 几乎没有直接的读写操作,也没有进行繁重的处理。
我读到 rabbitMQ 应该用于以下目的。
- 集成多个微服务
- 执行图像处理、图像上传等繁重任务
那么我应该如何以及何时使用 rabbitMQ?
RabbitMQ 是 Message Queue。当您的应用程序收到的请求多于它可以同时处理的请求时,它会很有用。
它的工作方式是队列存储传入的消息,直到它们被工作节点(例如您的 SDK)处理。工作节点通常会做一些工作(通常是繁重的处理),当他们完成工作时,他们会从队列中拉出一条新消息,处理它,做工作等等。
在你的情况下,如果你发现你的区块链拒绝了很多消息(例如因为一次请求太多,区块链无法足够快地达成共识),你可能需要它。
我觉得你的设计还可以。简单地说,您的系统必须管理更多负载,并且您添加了更多服务副本,前端有一个负载均衡器,能够在副本之间分配传入负载。如果您的 "sdk" 是纯无状态的(不记得从以前的请求中收集的客户端数据,而是将所有状态委托给 DB/BC),那么您就完成了工作。消息队列技术可以在其他场景中提供帮助
- 当您的应用程序以纯异步方式执行操作时
- 当您必须管理负载的大峰值时
- 当您的某些架构组件对事件做出反应时(例如,从设备接收警报,在您的点击次数达到 100 万时发送电子邮件等)
- 当您进入事件溯源时
- 当有状态服务以某种方式使用来自同一批请求的数据时(例如,来自 ID 为 1sw023 的用户的所有数据)
- 多种多样
采用 MQ 影响很大,需要付出一些努力来集成和管理事物。如果您不确定完全利用它的好处,请不要这样做
我开发了一个节点 sdk,它具有某些 REST API.These API 正在与 blockhchain 框架交互以进行读写操作。
在某些情况下,节点 sdk 上会收到许多请求。
因此,对于负载平衡,我使用 NGNIX
在另一个 instance.This 上再安装一个 sdk 副本,一切正常。
建议也使用 rabbitMQ
进行负载平衡。但是在我的 API 中, API 几乎没有直接的读写操作,也没有进行繁重的处理。
我读到 rabbitMQ 应该用于以下目的。
- 集成多个微服务
- 执行图像处理、图像上传等繁重任务
那么我应该如何以及何时使用 rabbitMQ?
RabbitMQ 是 Message Queue。当您的应用程序收到的请求多于它可以同时处理的请求时,它会很有用。
它的工作方式是队列存储传入的消息,直到它们被工作节点(例如您的 SDK)处理。工作节点通常会做一些工作(通常是繁重的处理),当他们完成工作时,他们会从队列中拉出一条新消息,处理它,做工作等等。
在你的情况下,如果你发现你的区块链拒绝了很多消息(例如因为一次请求太多,区块链无法足够快地达成共识),你可能需要它。
我觉得你的设计还可以。简单地说,您的系统必须管理更多负载,并且您添加了更多服务副本,前端有一个负载均衡器,能够在副本之间分配传入负载。如果您的 "sdk" 是纯无状态的(不记得从以前的请求中收集的客户端数据,而是将所有状态委托给 DB/BC),那么您就完成了工作。消息队列技术可以在其他场景中提供帮助
- 当您的应用程序以纯异步方式执行操作时
- 当您必须管理负载的大峰值时
- 当您的某些架构组件对事件做出反应时(例如,从设备接收警报,在您的点击次数达到 100 万时发送电子邮件等)
- 当您进入事件溯源时
- 当有状态服务以某种方式使用来自同一批请求的数据时(例如,来自 ID 为 1sw023 的用户的所有数据)
- 多种多样
采用 MQ 影响很大,需要付出一些努力来集成和管理事物。如果您不确定完全利用它的好处,请不要这样做