SQS或Kinesis哪个有利于排队?

问题描述 投票:-1回答:1

我有一台服务器,一次只能处理20个请求。当大量请求到来时,我想在一些队列中存储请求数据。并读取一组请求(即20)并按批处理。什么是理想的方式?使用SQS或kinesis。我完全糊涂了。

amazon-web-services api amazon-sqs amazon-kinesis
1个回答
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应用程序的能力。 Amazon Kinesis客户端库(KCL)将给定分区密钥的所有记录提供给同一记录处理器,从而可以更轻松地构建从同一Amazon Kinesis数据流读取的多个应用程序(例如,执行计数,聚合和过滤) 。

Amazon Simple Queue Service(Amazon SQS)提供可靠,高度可扩展的托管队列,用于在计算机之间传输消息。 Amazon SQS使您可以在分布式应用程序组件之间轻松移动数据,并帮助您构建独立处理消息的应用程序(具有消息级别的确认/失败语义),例如自动化工作流程。

问:我何时应该使用Amazon Kinesis数据流,何时应该使用Amazon SQS?

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

  • 将相关记录路由到同一记录处理器(如流式MapReduce)。例如,当给定密钥的所有记录都路由到同一记录处理器时,计数和聚合更简单。
  • 订购记录。例如,您希望将日志数据从应用程序主机传输到处理/归档主机,同时保持日志语句的顺序。
  • 多个应用程序能够同时使用相同的流。例如,您有一个应用程序可以更新实时仪表板,另一个应用程序可以将数据存档到Amazon Redshift。您希望两个应用程序同时并独立地使用来自同一流的数据。
  • 能够在几小时后以相同的顺序使用记录。例如,您有一个计费应用程序和一个审计应用程序,它运行在计费应用程序后面几个小时。由于Amazon Kinesis数据流最多可存储7天的数据,因此您可以在结算应用程序后最多7天运行审计应用程序。

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

  • 消息传递语义(例如消息级别的确认/失败)和可见性超时。例如,您有一个工作项队列,并希望独立跟踪每个项目的成功完成情况。 Amazon SQS跟踪ack / fail,因此应用程序不必维护持久检查点/游标。在配置的可见性超时后,Amazon SQS将删除已确认的消息并重新发送失败的消息。
  • 个人消息延迟。例如,您有一个作业队列,需要延迟安排单个作业。使用Amazon SQS,您可以将单个邮件配置为最多延迟15分钟。
  • 在读取时动态增加并发/吞吐量。例如,您有一个工作队列,并希望添加更多读者,直到清除积压。使用Amazon Kinesis数据流,您可以扩展到足够数量的分片(但请注意,您需要提前提供足够的分片)。
  • 利用Amazon SQS透明扩展的能力。例如,由于偶尔的负载高峰或业务的自然增长,您可以缓冲请求和负载变化。由于每个缓冲的请求都可以独立处理,因此Amazon SQS可以透明地扩展以处理负载,而无需您提供任何配置说明。
© www.soinside.com 2019 - 2024. All rights reserved.