0

我的任务是呈现包含复杂图表、SVG 图像、表格和其他数据的大型复杂 PDF 报告。处理 1 个请求最多需要 10 分钟才能执行。有时我们必须在有限的时间范围内处理数百个这样的请求。执行这项工作的网络应用程序当前托管在单台机器上。服务是完全无状态的。一台机器上的并行几乎没有影响,所以我们正在寻找水平扩展它的方法。

我使用 AWS 来托管我们的服务。目前我正在考虑将带有此服务的 EC2 实例包含到手动或自动扩展组中,以便运行所需数量的实例。我还考虑添加一个可以承载所有请求的队列。这样所有实例都可以使用 1 个队列,并且每个实例都可以处理自己的请求(处理请求 = 呈现 1 个 PDF 报告)。

您能否推荐一些使用 AWS 为无状态 .NET 应用程序扩展 CPU 密集型工作的开箱即用方法/最佳实践。

先感谢您!

4

1 回答 1

0

你有正确的想法。处理报告的请求应放入 SQS 队列。Worker EC2 实例可以使用队列中的这些请求并生成报告。将工作人员 EC2 实例放入配置为根据 SQS 队列大小向上/向下扩展的自动扩展组中。

在开始的高层次上,修改您的代码以发布/使用来自 SQS 队列的请求,使用此代码创建一个实例,然后从此实例创建一个 AMI。在自动缩放组中使用此 AMI。

最佳实践是使用实例的 IAM 角色来管理用于访问队列的 AWS 密钥(以及如果您想将报告保存到 S3 或对它们执行其他操作)。

于 2016-07-12T14:41:46.250 回答