功能较少的多功能应用程序或具有多种功能的功能应用程序很少?

时间:2016-11-29 22:50:12

标签: azure azure-functions

我们目前正在Azure中为每个环境/每个区域部署一个功能应用程序。这些功能应用程序包含许多功能。随着服务计划设置为消耗,因此动态我们对此非常满意,因为它降低了ARM模板的操作复杂性。

我们确实感到奇怪,是否最好在每个环境中拥有更多“功能应用程序”并在其中传播我们的功能?

这样做是否有任何实际好处,因为我们的印象表现将由动态服务计划扩展?

2 个答案:

答案 0 :(得分:11)

约旦,

问题的答案实际上取决于您使用功能处理的工作负载类型。

虽然缩放控制器将处理扩展以满足需求,但功能应用程序中的功能确实在每个实例上共享资源,而资源密集型(内存或CPU)可能会影响同一应用程序中的其他功能。

同一功能应用程序中的功能之间也没有进程隔离。它们都在相同的进程中运行(除了一些脚本语言,如Python,Batch等)并且在同一个App Domain中。因此,如果隔离是一个因素(出于安全性,依赖性管理,共享状态等原因),您可能需要考虑将功能拆分为不同的应用程序。

版本控制和部署是值得考虑的另一个因素,因为部署单元是功能应用程序(而不是单个功能)

话虽如此,如果您没有遇到工作负载的资源消耗问题,并且上述问题不是问题,正如您所指出的那样,在单个功能应用中运行多个功能可以显着简化管理,因此如果没有必要,我不会改变这种方法。

我希望这有帮助!

答案 1 :(得分:0)

法比奥已经指出了我的主要担忧。您的所有功能都在同一进程中运行。因此,如果其中一个功能正在超时,则该主机将被关闭(当然包括重启)。这也会影响您的其他功能。 我通过调用存储过程来触发服务总线触发器,这个问题有时达到了超时阈值。我的功能应用程序的重启大约花了7分钟,实时数据不再是实时的;-)