我有一个场景,其中我的一个类有一个静态成员,我可以从函数应用程序设置其值。假设属于同一应用服务计划的另一个功能应用也使用同一个类,并且也设置/依赖静态成员的值。现在,如果两个功能应用程序从不同时运行,我们就没有问题了。另外,如果它们不在同一个实例下运行,那么我们也没有问题,因为每个运行的实例都有自己的类定义。
我的问题是,同一应用服务中的每个功能应用是否在不同实例上运行?
我知道重新设计将消除任何可能的问题,但我只是对同一应用服务中功能应用之间的交互感到好奇。
最佳答案
我认为您了解流程边界会更好。
您有一个 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/