Amazon web services 估计SQS处理时间和负载
我将使用AWS SQS(常规队列,而不是FIFO)来处理不同的客户端度量 我希望每秒有大约400条消息(最坏的情况)。我的SQS消息将包含文件的S3位置 我创建了一个应用程序,它将侦听我的SQS队列,并处理来自它的消息 我所说的过程是指:Amazon web services 估计SQS处理时间和负载,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我将使用AWS SQS(常规队列,而不是FIFO)来处理不同的客户端度量 我希望每秒有大约400条消息(最坏的情况)。我的SQS消息将包含文件的S3位置 我创建了一个应用程序,它将侦听我的SQS队列,并处理来自它的消息 我所说的过程是指: 阅读SQS消息-> 从该SQS消息中获取S3位置-> 调用S3客户端-> 阅读该文件-> 添加几个附加字段-> 将此文件中的数据发布到AWS Kinesis Firehose 对于队列中的每个SQS消息,将执行类似的过程。S3文件的大小很小,小于0,5 K
- 阅读SQS消息->
- 从该SQS消息中获取S3位置->
- 调用S3客户端->
- 阅读该文件->
- 添加几个附加字段->
- 将此文件中的数据发布到AWS Kinesis Firehose李>
如何计算我是否能够每秒处理400条消息?我如何估计我的解决方案能够处理x5的数据增长?确定这一点的唯一方法是创建一个反映您的场景的测试环境 如果您的解决方案设计为并行处理消息,那么应该可以扩展您的系统以处理几乎任何工作负载 一个好的架构是使用AWS Lambda函数来处理消息。Lambda默认为1000个并发函数。因此,如果一个函数需要3秒钟才能运行,它将始终支持每秒333条消息。您可以请求增加Lambda并发性以处理更高的工作负载
如果您使用的是Amazon EC2而不是Lambda函数,那么您只需要扩展并添加更多EC2实例和更多工作人员来处理所需的任何工作负载。确定这一点的唯一方法是创建一个反映您的场景的测试环境 如果您的解决方案设计为并行处理消息,那么应该可以扩展您的系统以处理几乎任何工作负载 一个好的架构是使用AWS Lambda函数来处理消息。Lambda默认为1000个并发函数。因此,如果一个函数需要3秒钟才能运行,它将始终支持每秒333条消息。您可以请求增加Lambda并发性以处理更高的工作负载 如果您使用的是AmazonEC2而不是Lambda函数,那么您只需要扩展并添加更多EC2实例和更多的工作人员来处理所需的任何工作负载 如何计算我是否能够每秒处理400条消息?我如何估计我的解决方案能够处理x5的数据增长 测试它从一个小规模开始,然后从那里进行数学推断。使您的测试环境尽可能接近生产环境
- 在单个主机和单个线程上,数学很简单:
,或1000/AvgTotalTimeMillis=AvgMessagesPerSecond
1000/AvgMessagesPerSecond=AvgTotalTimeMillis
- 从单个线程和主机开始,为您概述的每个步骤以及总时间生成一些计时指标
- 计算您的平均/最大/最小时间,以及每秒转换为的消息数
- 在一个线程上每秒400条消息&主机的每条消息不超过3ms。希望这能使您明显地需要多个线程/主机
- 放大强>
- 现在,您已经知道了单个线程可以处理多少个线程,请计算出单个主机可以有效处理多少个线程(您需要进行实验)。在可能的情况下考虑批处理消息- SQL提供批处理操作。< /LI>
- 使用数学计算您需要多少台主机
- 如果你需要5倍的数字,从那里开始
- 在计算时,考虑所使用系统的任何限制:
- 查看SQS/S3/Firehose/等的节流限制。如果您计划使用Lambda而不是EC2来完成工作,它也有限制。确保你在这些限制之内,并且考虑如果你接近AWS,请联系AWS支持。
- 根据您的工作流程概要和详细信息,使用EC2,您可能可以在每个主机上处理相当数量的线程
- 应该足够了—您可能可以做得更小,因为性能瓶颈可能是获取和发送消息的网络I/O李>
- 考虑在需要增加吞吐量时使用自动缩放来处理消息峰值,但请记住,自动缩放可能需要几分钟的时间
- 在单个主机和单个线程上,数学很简单:
,或1000/AvgTotalTimeMillis=AvgMessagesPerSecond
1000/AvgMessagesPerSecond=AvgTotalTimeMillis
- 从单个线程和主机开始,为您概述的每个步骤以及总时间生成一些计时指标
- 计算您的平均/最大/最小时间,以及每秒转换为的消息数
- 在一个线程上每秒400条消息&主机的每条消息不超过3ms。希望这能使您明显地需要多个线程/主机
- 放大强>
- 现在,您已经知道了单个线程可以处理多少个线程,请计算出单个主机可以有效处理多少个线程(您将