0

我需要在 ELB 后面的一系列自动缩放实例上对大量音频文件进行转码。转码脚本的核心是基于Node.Js和FFMPEG。排队是不可能的,因为用户没有耐心!我需要控制每个实例上的转码数量以避免 CPU 100% 问题。

我的问题:

A-有没有办法为 ELB 定义一个策略来控制每个实例的连接数?如果没有,是否有任何参数可以控制每个实例的平均 CPU 利用率并在触发级别后添加一个新的?(我找到了这张幻灯片,但它不完整)如果它动态添加一个新实例,那么新实例需要多少时间才能 100% 有效地为用户提供服务(我的意思是自动缩放是否有很长的延迟?)

B-是否有另一种替代架构来实现相同的转码解决方案?(我已将我当前的想法作为图纸包含在此答案中)。我不能使用 Transcoding.com 之类的第三方解决方案,我需要拥有自己的本地解决方案。

C-我为每个实例使用 node.js,并通过套接字向用户浏览器显示进度。从浏览器端,我定期向 node.js 端发送一些 ajax 请求以获取进度信息。这种机制是否存在粘性会话问题?

谢谢。

4

2 回答 2

1

如果您的缩放需要响应服务器上的单个请求(即单个请求将需要 X 台机器在所需的时间范围内执行),那么自动缩放可能不会成为您的答案,因为您将拥有随着新实例变得活跃而延迟。以这种方式运行服务的成本也可能要高得多,因为您可以根据单个请求进行多次扩展和计时,为每个启动的实例收取最少一小时的费用。

但是,如果您关心自动缩放,例如,在请求量达到峰值时将您的队列增加 50%(即,您已经有许多服务器服务于许多请求,但您只需要在高峰时段通过添加来降低延迟更多实例),那么自动缩放可能对您来说就可以了。

在这种情况下,您可以配置任意数量的触发器来控制缩放事件。

ELB 确实支持会话亲和性(“粘性”会话)。

于 2012-11-10T01:08:50.840 回答
1

您将需要使用 AWS 开发工具包。通常你会使用 C#、Ruby 等的官方版本之一。由于你在 node.js 上,尝试在 github 上使用这个 SDK 来监控、限制和创建实例连接池等。

https://github.com/awssum/awssum

还有 AWS2JS

https://github.com/SaltwaterC/aws2js

于 2012-11-09T23:53:30.903 回答