我将使用AWS SQS(常规队列,而不是FIFO)来处理不同的客户端指标。
我希望每秒大约有400条消息(最坏的情况)。我的SQS消息将包含文件的S3位置。
我创建了一个应用程序,它将监听我的SQS队列,并处理来自它的消息。
按流程,我的意思是:
将对队列中的每个SQS消息进行类似的处理。 S3文件的大小很小,小于0.5 KB。
如何计算我是否每秒能够处理这400条消息?如何估计我的解决方案可以处理5倍的数据增长?
答案 0 :(得分:2)
如何计算我是否每秒能够处理这400条消息?如何估计我的解决方案可以处理5倍的数据增长?
测试它! 从小范围开始,然后进行数学运算以从那里进行推断。使您的测试环境尽可能接近生产环境。
1000 / AvgTotalTimeMillis = AvgMessagesPerSecond
或1000 / AvgMessagesPerSecond = AvgTotalTimeMillis
如何进行测试:
从一个线程和主机开始,并为您概述的每个步骤生成一些计时指标以及总时间。
向上扩展!
在进行此数学运算时,请考虑所用系统的任何限制:
基于我的经验的其他一些建议:
答案 1 :(得分:1)
确定这一点的唯一方法是创建一个反映您的情况的测试环境。
如果您的解决方案旨在并行处理消息,则应该可以扩展系统以处理几乎所有工作负载。
一个好的架构是使用AWS Lambda函数来处理消息。 Lambda默认为1000个并发函数。因此,如果一个函数需要3秒钟才能运行,它将始终支持每秒333条消息。您可以请求增加Lambda并发性以处理更高的工作量。
如果您使用Amazon EC2而不是Lambda函数,那将是横向扩展并添加更多具有更多工作人员的EC2实例来处理所需工作量的问题。