SQS或Kinesis哪个适合排队?

时间:2019-02-26 15:33:02

标签: amazon-web-services api amazon-sqs amazon-kinesis

我有一个服务器,一次只能处理20个请求。当大量请求到来时,我想将请求数据存储在某些队列中。并读取一组请求(即20个)并分批处理。理想的方式是什么?使用SQS或运动学。我很困惑。

1 个答案:

答案 0 :(得分:3)

SQS =简单队列服务用于以1:1的顺序对消息进行排队(一旦消息被使用,将从队列中将其删除)

Kinesis =低延迟,高容量数据流...通常适用于1:N(许多消息使用者)

由于Kinesis还存储了一段时间的数据,因此两者经常会混淆,但是它们的架构模式完全不同。

队列=> SQS。
数据流=> Kinesis。

取自https://aws.amazon.com/kinesis/data-streams/faqs/

  

问:Amazon Kinesis数据流与Amazon SQS有何不同?

     

Amazon Kinesis Data Streams可以实时处理流   大数据。它提供记录的顺序以及   以相同的顺序读取和/或重播记录到多个亚马逊   运动学应用程序。 Amazon Kinesis客户端库(KCL)提供   给定分区键的所有记录到同一记录处理器,   使构建来自同一对象的多个应用程序更容易   Amazon Kinesis数据流(例如,执行计数,   聚合和过滤)。

     

Amazon Simple Queue Service(Amazon SQS)提供可靠,高度可靠的服务   可伸缩的托管队列,用于存储消息之间的传递   电脑。 Amazon SQS使您可以轻松地在分布式数据库之间移动数据   应用程序组件,并帮助您构建其中的应用程序   消息是独立处理的(消息级别的确认/失败   语义),例如自动化的工作流程。

     问:我什么时候应该使用Amazon Kinesis Data Streams,什么时候应该使用   使用Amazon SQS?

     

对于具有以下用途的用例,我们建议使用Amazon Kinesis Data Streams:   与以下内容类似的要求:

     
      
  • 将相关记录路由到同一记录处理器(如在流式MapReduce中一样)。例如,计数和聚合是   将给定键的所有记录路由到同一记录时更简单   处理器。
  •   
  • 记录的排序。例如,您要在保持维护的同时将日志数据从应用程序主机传输到处理/归档主机。   日志语句的顺序。
  •   
  • 多个应用程序可以同时使用同一流的能力。例如,您有一个应用程序可以更新   实时仪表板,以及另一个将数据归档到Amazon Redshift的仪表板。   您希望两个应用程序都使用同一流中的数据   同时并独立。
  •   
  • 几个小时后可以按相同顺序使用记录。例如,您有一个计费应用程序和一个审计应用程序,它们   比计费应用程序晚几个小时。因为亚马逊   Kinesis Data Streams最多可以存储7天的数据,您可以运行   在开票申请后的7天内审核申请。
  •   
     

对于具有以下要求的用例,我们建议使用Amazon SQS:   类似于以下内容:

     
      
  • 消息语义(例如消息级别的确认/失败)和可见性超时。例如,您有一个工作项队列,想跟踪   成功完成每个项目。亚马逊SQS   跟踪确认/失败,因此应用程序不必维护   持久检查点/游标。 Amazon SQS将删除已确认的消息   并在配置的可见性超时后重新发送失败的消息。
  •   
  • 单个消息延迟。例如,您有一个作业队列,需要延迟安排单个作业。借助Amazon SQS,您可以   将个别邮件配置为最多延迟15分钟。
  •   
  • 在读取时动态增加并发性/吞吐量。例如,您有一个工作队列,想添加更多的读者,直到   积压已清除。借助Amazon Kinesis Data Streams,您可以扩展   到足够数量的分片(但是,请注意,您需要   提前提供足够的碎片)。
  •   
  • 利用Amazon SQS的透明扩展能力。例如,您缓冲请求,并且由于偶尔的负载变化   负载高峰或业务的自然增长。因为每个   缓冲的请求可以独立处理,Amazon SQS可以扩展   透明地处理负载,无需任何配置说明   从你那里来。
  •