【问题标题】:What are the possible use cases for Amazon SQS or any Queue Service?Amazon SQS 或任何队列服务有哪些可能的用例?
【发布时间】:2015-10-23 12:09:33
【问题描述】:

所以我一直在尝试使用亚马逊的 AWS,因为我公司的整个基础设施都基于它。

我一直无法正确理解的一个组件是队列服务,我已经在 Google 上进行了相当多的搜索,但未能得到满意的答案。我认为 Cron 作业Queue Service 有点相似,如果我错了,请纠正我。

那么 SQS 究竟是做什么的呢?据我了解,它存储了简单的消息,供 AWS 中的其他组件用来执行任务,您可以发送消息来执行此操作。

在这个问题中,Can someone explain to me what Amazon Web Services components are used in a normal web service?;答案提到他们使用 SQS 将他们想要异步执行的任务排队。为什么不直接将消息返回给用户并稍后进行处理?为什么要等待 SQS 完成它的工作?

另外,假设我有一个允许用户安排一些日常任务的网络应用程序,SQS 将如何适应它?

【问题讨论】:

    标签: amazon-web-services amazon-sqs


    【解决方案1】:

    不,cron 和 SQS 不相似。一个 (cron) 调度作业,而另一个 (SQS) 存储消息。队列用于将消息生产者与消息消费者分离。这是构建规模和可靠性的一种方式。

    假设您为热门电视节目构建了一个移动投票应用,并且有 5 到 2500 万观众同时投票(在每场演出结束时)。您将如何在如此短的时间内(例如 15 秒)处理这么多票?您可以构建一个重要的 Web 服务器层和数据库后端,每秒可以处理数百万条消息,但这会很昂贵,您必须预先配置最大预期工作负载,而且它会没有弹性(例如数据库故障或限制)。如果很少有人投票,那么您就为基础设施付出了过高的代价;如果投票变得疯狂,那么选票可能会丢失。

    更好的解决方案是使用某种排队机制,将投票应用程序与您的服务分离,其中投票队列具有高度可扩展性,因此它可以愉快地吸收 10 条消息/秒或 10 百万条消息/秒。然后,您将有一个应用程序层尽可能快地从该队列中提取消息以统计选票。

    【讨论】:

    • 啊,所以用例有点像负载/峰值分布。但是,如果您有一个无服务器事件驱动的设置,这是否太重要了?假设处理投票的代码是一个事件驱动的 lambda,在这种情况下配置和尖峰并不重要,最好的 SQS 可以做的是批处理,对吧?
    【解决方案2】:

    我要添加到@jarmod 出色而简洁的答案的一点是消息的大小 确实很重要。例如,在 AWS 中,最大大小仅为 256 KB,除非您使用扩展客户端库,这会将最大值增加到 2 GB。但请注意,它使用 S3 作为临时存储。

    在 RabbitMQ 中,实际限制约为 100 KB。 RabbitMQ 没有硬编码限制,但系统只是或多或少地经常停止。从个人经验来看,RabbitMQ 可以不间断地处理大约 1 MB 的消息流,持续大约 1 - 2 个小时,但随后它会开始表现不稳定,经常变成僵尸,您需要重新启动该过程。

    【讨论】:

      【解决方案3】:

      SQS 是解耦服务的好方法,尤其是在需要大量繁重的、面向批处理的处理时。

      例如,假设您有一项服务,人们可以从他们的移动设备上传照片。上传照片后,您的服务需要对照片进行一系列处理,例如将它们缩放到不同的大小、应用不同的过滤器、提取元数据等。

      实现此目的的一种方法是将消息发布到 SQS 队列(或者可能将多条消息发布到多个队列,具体取决于您的架构方式)。消息描述了需要对新上传的图像文件执行的工作。将消息写入 SQS 后,您的应用程序可以向用户返回成功消息,因为您知道自己拥有图像文件并且已安排处理。

      在后台,您可以让服务器从 SQS 读取消息并执行消息中指定的工作。如果其中一台服务器死机,另一台将接收消息并执行工作。 SQS 保证消息最终会被传递,因此您可以确信工作最终会完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-09
        • 2017-04-12
        • 2016-01-18
        • 2019-04-11
        • 1970-01-01
        • 2014-10-23
        • 2012-12-24
        • 2014-03-23
        相关资源
        最近更新 更多