当前位置: 首页 > 知识库问答 >
问题:

AWS SQS-水平缩放设置

贺懿轩
2023-03-14

我使用的是AWS SQS,所以我的两个应用程序(我们称它们为app1和app2)可以彼此交互。到目前为止,app1正在向queue发送消息,而app2正在监听和处理app1发送的消息。流程是客户端(reactJS应用程序)向App1发送http请求,App1使用AWS SQS将消息转发给App2,然后App2通过websockets向所有其他用户/客户端广播某个消息(这里重要的是所有websocket连接都在App2中)

但是,在过去的一段时间里,我需要实现App2的水平缩放(我正好运行了App2的两个实例),现在websocket连接是分开的,一些websocket连接在App2的实例1上,一些websocket连接在App2的实例2上。所以最近我面临一个挑战:app1将消息发送到队列,然后app2的一个实例读取消息。

所以我的问题是,App2的两个实例是否都可以读取SQS消息,或者是否有其他方法来处理这种情况?提前道谢!

共有1个答案

帅颖逸
2023-03-14

据我所知,扇出式(这里也有更多信息)架构可以解决您的问题。在体系结构中,应用程序1将向SNS主题发送消息,而不是向SQS队列发送消息。然后您将为主题订阅两个SQS队列,以便每个实例都有自己的主题。这样,消息将在两个app2的两个实例中广播。

如果不能将初始SQS更改为SNS,则需要将消息从SQS重新广播到SNS,例如,使用lambda函数。

该体系结构也是非常可伸缩性的,因为当您添加第三个实例时,您只需添加第三个SQS队列。

 类似资料:
  • 我是一名Ruby/PHP web应用程序开发人员已经有一段时间了,我已经习惯了水平缩放服务器实例以处理更多请求的想法。水平缩放-意味着位于负载均衡器后面的应用程序的独立实例,它们什么都不共享,彼此不知道。 由于websocket有效地保持了浏览器和服务器之间的开放式通信线路,那么PHP/Ruby世界中典型的水平缩放架构是否会导致像链接中所解释的那样的聊天应用程序中断--因为新的websocket连

  • 在Azure中关于水平缩放的术语有点不清楚。 我们有一个“缓存刷新”特性,涉及到设置一个侦听器来订阅消息队列中的“主题”,这样它就会在接收到消息时刷新静态缓存。我们以前认为必须在HttpApplication.init事件中设置侦听器,每个实例都会调用该事件,但在意识到AppDomain中的所有HttpApplication实例都共享同一组静态变量之后,这就不再有意义了。 我的新理解是,即使在没有

  • 我想知道什么是相对于最大水平扩展实例数配置分区数量的好方法。 假设我有一个有6个分区的主题。 我有一个应用程序,它使用的与的6.这意味着我将有6个KafkaMessageListenerContainer,每个都使用一个线程,并且均匀地消耗来自所有分区的消息。 如果以上是正确的,那么我想知道如果我通过添加另一个实例水平缩放应用程序会发生什么?如果新实例具有相同的配置,并发为6,当然也具有相同的消费

  • 我在Java中编码了一个Mandelbrot集分形,并包含了平移和放大分形的能力。唯一的问题是,当我平移图像并试图放大时,它看起来好像试图放大中心并平移一点。平移和缩放不是真正的平移或缩放,而是对分形的重新计算,看起来像是平移或缩放。 这是我的代码。 我能告诉用户在哪里可以让相机更精确地缩放吗? 先谢谢你。 编辑:图片对于任何想知道这个程序将呈现什么。

  • 尝试将自动缩放部署到我的集群,但目标显示为“未知”,我尝试了不同的指标服务器,但无济于事。我关注了[这个githhub问题](https“//github.com/kubernetes/minikube/issues4456/)甚至认为我使用的是Kubeadm而不是迷你库贝,它并没有改变问题。 我也关注了这个堆栈帖子,但也没有成功。 我正在运行Ubuntu 20.0.4 LTS。 使用 kuber

  • 嗨,我目前正试图在谷歌地图上显示多个点。除了缩放功能外,一切正常。我无法确定如何设置缩放以便显示所有点。如果点很近,代码显示得很好,但如果点很远,代码显示得不好。我到处搜索过,但找不到任何东西。 有什么帮助吗?