目前我们正在 AWS Beanstalk 上运行我们的应用程序,但正在尝试确定 Azure 的适用性。
我们最大的问题是我们正在支付但没有使用的浪费的 CPU 时间。我们在 t2.small 实例上运行,因为它们具有我们需要的最小 RAM 量,但我们甚至从未使用分配的基本 CPU 时间量。(t2.small 为 20%)我们在一天中的短暂爆发期间需要大量的 CPU 能力,并且在此之前让更多的实例上线是我们处理它的唯一方法。AWS Lambda 对我们来说看起来是一个很好的解决方案,但我们依赖于 SAPI 等 Windows 组件,因此我们必须在 Windows VM 内运行。
查看 Azure 云服务,我们认为使用 Web 角色最适合我们的应用程序,但似乎 Web 角色只不过是启用了 IIS 的 Win 2012 VM。因此,随着应用程序的扩展,它只会带来更多这些虚拟机,而这正是我们目前所拥有的。Azure 是否有类似于 Lambda 的服务,您只需为使用的 CPU 处理时间付费?我们使用 CPU 资源效率低的原因是我们的语音生成应用程序使用了丢失的 3rd 方语音,但在调用 SAPI 时只能运行单线程,因为语音引擎在多线程时容易崩溃。我们无法控制这个语音引擎。它必须能够访问系统注册表和 Windows SAPI,因此理想的解决方案是以某种方式将所有依赖项包装成一个包并将其部署到 Azure 上,然后启动多个实例。