目前我们正在AWS Beanstalk上运行我们的应用程序,但正在尝试确定Azure的适用性。
我们最大的问题是我们支付但未使用的CPU时间浪费。我们在t2.small实例上运行,因为它们具有我们需要的最小RAM量,但我们从不使用分配的基本CPU时间量。 (对于t2.small来说是20%)我们在当天的短暂爆发期间需要大量的CPU功率,并且在此之前提供更多实例,这是我们处理它的唯一方法。 AWS Lambda对我们来说是一个很好的解决方案,但我们依赖于SAPI等Windows组件,因此我们必须在Windows VM中运行。
看看我们认为使用Web角色的Azure云服务最适合我们的应用程序,但似乎Web角色只不过是启用了IIS的Win 2012 VM。因此,随着应用程序的扩展,它只会带来更多这些虚拟机,这正是我们目前所拥有的。 Azure是否有类似于Lambda的服务,您只需支付使用的CPU处理时间? 我们使用CPU资源效率低的原因是我们的语音生成应用程序使用第三方语音丢失但在调用SAPI时只能运行单线程,因为语音引擎在多线程时容易崩溃。我们无法控制这个语音引擎。它必须能够访问系统注册表和Windows SAPI,因此理想的解决方案是以某种方式包装所有依赖项是一个包并将其部署到Azure上,然后启动它的多个实例。什么"这"我不知道
答案 0 :(得分:30)
Microsoft刚刚宣布推出一种新的无服务器计算服务,作为AWS Lambda的替代方案,称为Azure Functions
:
https://azure.microsoft.com/en-us/services/functions/
使用Azure功能,您只需根据功能运行的时间和所选功能空间的内存大小,按照每GB价格计算计算机使用的数量,以最接近的100毫秒付费。功能空间大小可以从128mb到1536mb。第一个400k GB /秒免费。
Azure功能请求按每百万个请求收费,首批100万个请求免费。
答案 1 :(得分:5)
根据Azure网站上的文档:https://azure.microsoft.com/en-in/campaigns/azure-vs-aws/mapping/,与AWS Lambda等效的服务为Web Jobs
和Logic Apps
。
答案 2 :(得分:2)
Azure上Lambda的最直接等价物是Azure Automation,除了运行Powershell而不是Node等之外,它还做了很多Lambda所做的事情。它并不像Lambda那样紧密集成到其他服务中,但它有相同的型号。即你编写一个脚本,并按需执行。
我假设SAPI您正在引用语音API?如果是这样,您可以为Azure创建Powershell模块,它们可以包含dll文件。在这种情况下,您可以创建一个模块来包装SAPI dll,并且应该执行您要查找的内容。
如果您想要一个完整的计算环境,那么在运行时不会出现多台计算机的复杂性。您可以使用Azure Batch,这将是Azure推荐的运行您正在寻找的方式。
您需要评估的成本效益将是您的解决方案对本机.net堆栈(批处理)运行的速度有多快,以及从Powershell运行时性能是否显着下降。
就个人而言,我会试试自动化,它的功能非常强大。
答案 3 :(得分:-1)
azure中有一个名为“Cloud Service”的东西,它允许您在纯VM上运行代码。这些扩展选项包括CPU%,队列大小等。如果您可以安排您的需求,Azure允许您轻松设置计划的缩放器,即从上午8点到上午08:10的4个VM,当然,在Azure中,你按分钟付款,所以这可能是一个可行的解决方案。
我会说更多,但Azure中的文档确实非常棒,以至于我通过在这里提供“翻译”来冒犯它们。结帐azure.com获取更多信息:)