the*_*fin 12 amazon-sqs amazon-web-services
所以我一直在努力掌握亚马逊,__CODE__因为我公司的整个基础设施都是以它为基础的.
我从未能够正确理解的一个组件是__CODE__,我已经搜索了很多但是我无法得到满意的答案.我认为一份__CODE__工作并且__CODE__有些相似,如果我错了,请纠正我.
到底究竟__CODE__是什么?据我所知,它存储了其他组件__CODE__用于执行任务的简单消息,您可以发送消息来执行此操作.
在这个问题中,有人可以向我解释一下普通网络服务中使用的Amazon Web Services组件是什么吗?; 答案提到他们用来__CODE__排队他们想要异步执行的任务.为什么不直接向用户发送消息并稍后进行处理?为什么要等着__CODE__做呢?
另外,我只想说我有一个网络应用程序,允许用户安排一些日常任务,如何__CODE__适应?
jar*_*mod 55
不,cron和SQS不相似.一个(cron)调度作业,而另一个(CQS)存储消息.队列用于将消息生成器与消息使用者分离.这是构建规模和可靠性的一种方法.
假设您已经为流行的电视节目制作了一个移动投票应用程序,并且500万到2500万观众都在同一时间投票(在每次演出结束时).你如何在如此短的时间内(比方说,15秒)处理那么多的选票?您可以构建一个重要的Web服务器层和数据库后端,每秒可处理数百万条消息,但这样做很昂贵,您必须预先设置最大预期工作负载,并且它不具有弹性(例如,数据库故障或限制).如果很少有人投票,那么你就要为基础设施付出过高的代价; 如果投票变得疯狂,那么投票可能会丢失.
一个更好的解决方案是使用一些排队机制,将投票应用与您的服务分离,其中投票队列具有高度可扩展性,因此它可以愉快地吸收10条消息/秒或1000 万条消息/秒.然后,您将有一个应用程序层尽可能快地从该队列中提取消息以统计选票.
小智 7
SQS 是一种解耦服务的好方法,特别是当需要大量繁重、面向批处理的处理时。
例如,假设您有一项服务,人们可以从移动设备上传照片。照片上传后,您的服务需要对照片进行一系列处理,例如将它们缩放到不同的尺寸、应用不同的滤镜、提取元数据等。
实现此目的的一种方法是将一条消息发布到一个 SQS 队列(或者可能将多条消息发布到多个队列,具体取决于您的架构方式)。这些消息描述了需要对新上传的图像文件执行的工作。将消息写入 SQS 后,您的应用程序可以向用户返回成功,因为您知道您拥有图像文件并且已安排处理。
在后台,您可以让服务器从 SQS 读取消息并执行消息中指定的工作。如果其中一台服务器挂掉,另一台服务器将接收消息并执行工作。SQS 保证消息最终会被传递,因此您可以确信工作最终会完成。
我要添加到@jarmod出色而简洁的答案中的一件事是消息的大小确实很重要。例如,在AWS中,最大大小仅为256 KB,除非您使用扩展客户端库,否则会将最大大小增加到2 GB。但是请注意,它使用S3作为临时存储。
在RabbitMQ中,实际限制约为100 KB。RabbitMQ中没有硬编码限制,但是系统只是或多或少地停顿了。根据个人经验,RabbitMQ可以连续不断地处理大约1 MB的消息流约1-2小时,但是随后它将开始表现异常,经常成为僵尸,您需要重新启动该过程。
| 归档时间: |
|
| 查看次数: |
6698 次 |
| 最近记录: |