0

由于我们是 Azure Function App 的新手,我们听说它的强大功能之一是可扩展性,但是 azure function scale 是如何工作的呢?它是自动缩小还是我们可以设置的任何机制?例如,规模大小限制的最大值。

当我们在本地调试 azure 函数时(我们已经尝试过ServiceBusTrigger、EventHubTrigger、QueueTrigger 和 CosmosDBTrigger),似乎每次在我们继续发送消息时,同一个函数实例被一遍又一遍地调用,这对于缩放不起作用/正如我们预期的那样并行工作,有什么好的方法可以在本地调试可伸缩性吗?

4

2 回答 2

5

Azure Functions 的缩放由Scale Controller确定:

秤控制器

Scale Controller 仅在云中运行,因此无法在本地测试缩放。该控制器的内部工作原理也未公开。

测试扩展的最佳方法是在云中实际进行概念验证并确保配置 Application Insights。对函数应用进行负载测试后,您可以执行如下所示的 Log Analytics 查询,以查看是否已预配函数应用的多个实例:

requests | 
project timestamp, id, operation_Id, operation_Name, duration, cloud_RoleName, cloud_RoleInstance | 
where cloud_RoleName =~ 'FUNCTION_APP_NAME' | 
order by timestamp desc | 
take 100

cloud_RoleInstance 属性具有已供应资源的 ID。当该列包含多个值时,您就知道发生了缩放。

日志分析

老实说,测试 Azure Functions 是否自动缩放不应该是你的主要关注点,因为它是 Azure 的责任。您可能需要自动缩放来处理小型和大型工作负载,并且您可能有完成处理的时间限制。如果这是您真正关心的问题,那么您最好测量端到端的性能/时间。

于 2019-08-16T07:42:55.510 回答
3

azure 功能的可扩展性取决于托管计划,托管计划有 3 种类型:消费计划、高级计划(它是预览版,所以我们现在可以忽略它)、专用计划(应用服务计划)。

对于消费计划,它会根据传入事件的数量自动扩展。

对于应用服务计划,您可以通过添加更多虚拟机实例来手动扩展,也可以启用自动扩展。更多细节可以参考这篇文章

而当你在没有托管计划的情况下在本地运行它时,你看不到这种行为。

希望这可以帮助。

于 2019-08-16T02:45:08.193 回答