azure - 同一应用服务中的 Azure 函数是否在同一实例中运行

标签 azure static thread-safety azure-functions

我有一个场景,其中我的一个类有一个静态成员,我可以从函数应用程序设置其值。假设属于同一应用服务计划的另一个功能应用也使用同一个类,并且也设置/依赖静态成员的值。现在,如果两个功能应用程序从不同时运行,我们就没有问题了。另外,如果它们不在同一个实例下运行,那么我们也没有问题,因为每个运行的实例都有自己的类定义。

我的问题是,同一应用服务中的每个功能应用是否在不同实例上运行?

我知道重新设计将消除任何可能的问题,但我只是对同一应用服务中功能应用之间的交互感到好奇。

最佳答案

我认为您了解流程边界会更好。

您有一个 Azure Function App (FuncApp1.azurewebsites.net),它可能具有在应用服务计划上托管的一个或多个函数。您提到您有另一个Azure功能应用程序(FuncApp2.azurewebsites.net),其一个或多个自己的功能集托管在同一应用程序服务计划上。这是正确的吗?

FuncApp1 将在云中的某些计算机上拥有自己的进程 ID、内存/CPU 消耗和线程,FuncApp2 也是如此。静态成员基本上独立存在于两个单独的程序中。在您的函数应用程序可能会扩展的情况下,每个新实例很可能都有自己的进程 ID 等。

所以您的函数应用不会相互干扰。您唯一关心的应该是静态成员在同一进程 ID 中是否是线程安全的。在什么情况下您依赖可能会根据请求更改的静态成员?一些递增的 ID?

关于azure - 同一应用服务中的 Azure 函数是否在同一实例中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62203987/

相关文章:

c++ - 如何从静态方法中获取类名?

scala - 无法从 scala 访问 java 静态方法

java - String.intern() 线程安全吗

azure - 是否有任何特定方法可以在一个 http 请求中从 Azure 存储队列获取超过 32 条消息

linux - 如何在 Windows Azure 中配置我的 Web 应用程序以根据请求 URL 将请求重定向到不同的 VM?

c# - 静态构造函数会导致性能开销?

使用日历和线程安全的 Java ResultSet.getTimestamp

c++ - 线程本地存储 (TLS) 和 OpenMP

azure - 使用 ARM 模板删除现有资源

c# - 此请求的授权已被拒绝 - 桌面到 ASP.NET Web API