azure 函数是否在正在运行的实例之间共享上下文?

我正在开发一个基于 Azure Functions 的项目,我有一个带有缓冲区的静态帮助器类(私有静态 ConcurrentDictionary),其中包含一些要在执行结束时处理的项目列表,问题是这个缓冲区将被共享在多个正在运行的实例之间?


噜噜哒
浏览 111回答 2
2回答

郎朗坤

这取决于。最常见的是,函数的多次执行将在同一个实例上运行。意味着相同的 .NET 进程和应用程序域,因此它们将共享您的静态字典。如果您的 Function App 在单个实例上处理的请求过多,则会创建第二个实例,并且不会与第一个实例共享任何内容。因此,在这种情况下,您将拥有 2 个(如果需要,还有 3、4、N 个)词典。这些实例中的任何一个也可能随时消失,因此您无法在两次执行之间可靠地在字典中存储任何内容。您可以“尽最大努力”做到这一点,例如缓存数据。

红颜莎娜

Azure Functions 不一定每次被调用时都在同一台机器上运行,这意味着共享内存将是不稳定的,因为未来的调用可能会在全新的机器上发生。理想情况下,将事物设计为无状态并使用更适合稍后将任务排队的技术,例如 Azure 队列。如果您必须保持某种状态,请将其放在更永久的地方,例如%HOME%目录或存储中。
打开App,查看更多内容
随时随地看视频慕课网APP