首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内部消息队列与外部消息队列

内部消息队列与外部消息队列
EN

Stack Overflow用户
提问于 2022-02-22 07:44:53
回答 1查看 483关注 0票数 1

我目前正在开发一个使用节点和python的微服务系统。我们目前正在使用AWS来处理队列上的服务之间的消息,但是在其中一个服务中,我们向队列发送了一条消息,而该服务处理了该消息。没有其他微型服务来处理它。因此,我的问题是,最好是通过同一个应用程序或容器中的事件总线/事件队列来处理内部消息,还是应该通过网络请求将消息发送到外部服务并由工作人员处理。

  1. 内箱容器

代码语言:javascript
运行
复制
Application
|-------------------------------------------------------|
|                                                       |
|  |---------|         Send Message          |---------||
|  | Main    |------------------------------>| Internal||
|  |  App    |<------------------------------| Queue   ||
|  |---------|         Emit Message          |---------||
|                                                       |
|-------------------------------------------------------|

  1. 外部队列

代码语言:javascript
运行
复制
Application
|-----------------|
|                 |
|                 |     Send Network Message  |---------|
|                 |-------------------------->| External|
|                 |<--------------------------| Queue   |
|                 |   Process Network Message |---------|
|                 |                                      
|-----------------|
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 12:39:21

在作出决定之前,我会考虑以下几个方面:

考虑到内部队列,考虑到内部队列,如果整个荚/box崩溃(无论出于什么原因),会发生什么?从业务和架构的角度来看,丢失存储在队列中的消息是可以接受的?

  • 是数据处理工作流中的一个重要向量吗?如果是,那么使用内部队列可能是一种选择,因为您不会对数据停止处理。如果不是,而且数据一致性更重要,那么外部队列可能是最好的选择。从可伸缩性的角度来看,如果内部队列变得太大,

  • 怎么办?最终,它可能会填充盒/荚上的内存,但您也可能希望使用其他工作人员将处理延迟保持在某些阈值内(因此,您仍然可能会关闭process).

  • Also,--假设您从队列中消耗的进程会崩溃(因为某种原因),或者它有一个逻辑错误,但是队列中仍然包含数据,因为队列与应用程序位于同一个进程上,所以重放它可能很困难。对于外部队列,您只需插入一个新的工作用户,它可能位于另一个盒子上。从可观察性的角度来看,

  • (所消耗/发送/正在运行的消息数量等)使用外部队列要比自己管理所有这类东西要好得多。

TL;DR --如果您有延迟限制,并且队列用于保存少量快速消耗的消息,那么使用内部队列可能是有意义的。否则,(考虑到上述情况),外部队列是更好的选择。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71217565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档