Mal*_*kzz 1 api amazon-sqs amazon-web-services amazon-kinesis
我有一台服务器,一次只能处理20个请求。当大量请求到来时,我想将请求数据存储在某些队列中。并读取一组请求(即20个)并分批处理。理想的方式是什么?使用SQS或运动学。我很困惑。
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 Data Streams,什么时候应该使用Amazon SQS?
对于具有类似以下要求的用例,我们建议使用Amazon Kinesis Data Streams:
- 将相关记录路由到同一记录处理器(如在流式MapReduce中一样)。例如,当给定键的所有记录都路由到同一记录处理器时,计数和汇总会更简单。
- 记录的顺序。例如,您要在保持日志语句顺序的同时将日志数据从应用程序主机传输到处理/归档主机。
- 多个应用程序可以同时使用同一流的能力。例如,您有一个应用程序可以更新实时仪表板,而另一个应用程序可以将数据归档到Amazon Redshift。您希望两个应用程序同时并独立地使用同一流中的数据。
- 几个小时后可以按相同顺序使用记录。例如,您有一个计费应用程序和一个审核应用程序,运行时间比计费应用程序晚了几个小时。由于Amazon Kinesis Data Streams最多可以存储7天的数据,因此您可以在计费应用程序之后最多7天运行审核应用程序。
对于具有类似于以下要求的用例,我们建议使用Amazon SQS:
- 消息语义(例如消息级别的确认/失败)和可见性超时。例如,您有一个工作项队列,并希望独立跟踪每个项的成功完成情况。Amazon SQS跟踪确认/失败,因此应用程序不必维护持久性检查点/光标。在配置的可见性超时后,Amazon SQS将删除确认的消息并重新发送失败的消息。
- 单个消息延迟。例如,您有一个作业队列,需要延迟安排单个作业。借助Amazon SQS,您可以将单个消息配置为最多延迟15分钟。
- 在读取时动态增加并发/吞吐量。例如,您有一个工作队列,想要添加更多阅读器,直到清除积压。借助Amazon Kinesis Data Streams,您可以扩展到足够数量的分片(但是请注意,您需要提前配置足够的分片)。
- 利用Amazon SQS的透明扩展能力。例如,您缓冲请求,并且由于偶尔的负载高峰或业务的自然增长而导致负载变化。由于每个缓冲的请求都可以独立处理,因此Amazon SQS可以透明扩展以处理负载,而无需您提供任何配置说明。
归档时间: |
|
查看次数: |
522 次 |
最近记录: |