具有 Singleton 类的 Azure Auto Scaling

Bat*_*ush 2 c# singleton web-applications azure

Azure 具有此设置,您可以根据当前负载的大小自动缩放正在运行的 Web 应用程序实例。

我的问题是,如果您有一个单例类并运行多个实例,会发生什么情况,这个类每个实例都会存在一次吗?根据我的理解,每个实例都会初始化单例类,这是正确的吗?

mar*_*kti 5

每个“实例”实际上只是运行您的 Web 应用程序的另一个虚拟机。因此,每个应用程序都有自己的应用程序池、内存空间和 IIS 工作进程来处理 Web 应用程序的流量。

由于单例在每个实例 (VM) 上的自己的应用程序空间中运行,因此每个“实例”都会获得一个单例。

如果您有兴趣创建超越其内存位置的对象实例,请查看 Actor 模式、Orleans 项目和新的 Azure Service Fabric。这些技术是 Actor 模式的实现,允许您创建与其运行的物理基础设施无关的对象。

如果您只是对在 Web 应用程序的多个实例之间共享状态感兴趣,请查看 Redis 缓存,它是一种在 Web 应用程序之间创建共享数据池的高性能方法。