Amazon Simple Queue Service(Amazon SQS)

来源:互联网 发布:财经软件排行 编辑:程序博客网 时间:2024/04/28 04:14

Amazon Simple Queue Service(Amazon SQS)为临时存储和短文本数据消息的传送提供可靠的、高可扩展性的托管消息队列服务。一个Amazon SQS队列是可以存放等待处理的消息(通常一个消息被一个应用程序产生而被另一个使用)的一个临时的数据栈。Amazon SQS消息能够被服务器、Amazon EC2环境下或者互联网上的任何地方的分布式应用程序组件发送或者接收。Amazon SQS支持无限数量的队列,并且支持对消息进行无序的至少一次传送。

Amazon SQS和其它的消息对列服务都被看成是异步通信协议,而且Amazon SQS还能被看做存储许多种应用程序的临时的但持久的数据的存储器。将Amazon SQS作为临时存储器使用可以最小化其它诸如临时磁盘文件的存储机制。

 

1、完美的使用方案

Amazon SQS非常适合多个应用程序要用宽松的耦合方式进行通信和合作。这个比较特殊地发生在生产者和消费者的方案中,在这个方案中,一些部分可能比别的部分慢或者快,或者交互的组件的数据量随着时间和加载而变化。可以将Amazon SQS必做“软件胶水”,因为它能够使应用程序组件在不紧密耦合或者异步操作的高独立性的情况下可靠地进行通信。

一个Amazon SQS的经典实用实例是同一个多步处理流水线合作,在这里,每条消息同一个必须处理的任务相关联。每个任务用一个指示这个任务已经完成的Amazon SQS消息和一个指向Amazon S3中的任务数据的指针描述。

为了更加形象地说明,假设你有一些图像需要编码。在一个SNS工作者队列,你为每个文件创建一个SNS消息,这个消息指示了命令和文件在Amazon S3中的位置。运行图片处理软件的Amazon EC2实例池会做以下事情:
    1、异步地从队列中取出任务消息

    2、获取文件

    3、处理转换

    4、将图像写回AmazonS3

    5、在另一个队列中写入一个“任务完成”消息

    6、删除最初的那个消息

    7、在工作者队列中检查是否还有消息

使用Amazon SQS队列可以让工作者实例的数量增多或者减少,还能够在不改变应用程序的前提下让每个工作者实例的处理能力随着整个的工作负载而增大或者减小。

 

2、性能

Amazon SQS是一个分布式的队列系统,它非常适合水平扩展性,而不是单个线程的收发速度。单个客户端能够以每秒5到50条消息的速度收发Amazon SQS消息。一次请求多个消息(高达10个)可以获得更高的接收性能。在一个已经在队列中的消息需要在几秒钟之后才能被接收。

 

3、持久性和可用性

在设计时,Amazon SQS中的消息是高耐用性但是是临时的。为了防止消息丢失或者不可用了,所有的消息都会在多个服务器和数据中心冗余存储。消息的保留时间可以在每个队列的基础上配置,从一个小时到14天。消息会保留在队列中直到它们被显示删除,或者保留期限过了,系统自动删除。

 

4、花费

在所有的AWS中,使用Amazon SQS,你只需为你使用的部分付费,没有最少费用或者长期合同。为了开始和使用简单的程序,Amazon SQS提供了一种免费的服务,每个月10000个请求而无需付费。在免费的服务之外,Amazon SQS的费用价格以请求数量和数据传送量计算。

 

5、弹性和可扩展性

Amazon SQS具有高弹性并且可以大规模地扩展。它能够让无数的计算机在任何时候都可以对无数的消息进行读取和写入。它支持无限制的队列数目和每个用户的每个队列的无限制的消息数目。

 

6、接口

Amazon SQS能够同时通过SOAP和HTTP接口访问。五个API可以让开发者很简单地开始使用SQS:CreateQueue,SendMessage,ReceiveMessage,ChangeMessageVisibility,DeleteMessage。其它的API能够提供高级功能。在所有的情况下,SOAP和查询API能够被Java、C#、Perl、PHP使用。

 

7、Amazon SQS反模式

    二进制数据或者大数据—Amazon SQS消息必须是文本,最大是64KB。如果你需要存放在队列中的数据量大于64KB,或者它是二进制数据,最好使用Amazon S3或者RDS存储大数据和二进制数据,然后在Amazon SQS中存放指向数据的指针。

    长期存储—如果消息需要被保存的时间超过14天,Amazon S3或者其它的存储机制更合适。
原创粉丝点击