如何在负载平衡的web场中处理ASP.NET应用程序变量

如何在负载平衡的web场中处理ASP.NET应用程序变量,asp.net,load-balancing,Asp.net,Load Balancing,我正在将一个站点从一台服务器移动到一个服务器场,该服务器场由负载平衡器后面的三台web服务器组成。处理会话管理似乎很容易——只需在负载平衡器上使会话“粘性”(我们评估了基于SQL的会话管理,但决定继续使用InProc会话管理以提高效率) 然而,我们也使用一个保存在应用程序空间中的相当大的配置对象(例如Application[ObjName])。因为配置对象是从内存加载的,所以在有人对配置进行更改之前,我们没有问题。此时,宿主服务器上的应用程序将发生更改,数据库也将发生更改。但是,其他两台服务器不

我正在将一个站点从一台服务器移动到一个服务器场,该服务器场由负载平衡器后面的三台web服务器组成。处理会话管理似乎很容易——只需在负载平衡器上使会话“粘性”(我们评估了基于SQL的会话管理,但决定继续使用InProc会话管理以提高效率)


然而,我们也使用一个保存在应用程序空间中的相当大的配置对象(例如Application[ObjName])。因为配置对象是从内存加载的,所以在有人对配置进行更改之前,我们没有问题。此时,宿主服务器上的应用程序将发生更改,数据库也将发生更改。但是,其他两台服务器不会有更改。我们已经讨论过是否有“每分钟一次”的轮询规则(例如,在新会话上),将信息保留在会话中(效率不高),等等。所有这些都有严重的缺点。我想知道其他人做什么。是否可以将应用程序空间保留在SQL Server上,而将会话空间保留在PROC中?任何关于如何处理此问题的帮助或见解都将不胜感激

应用程序[]总是基于本地内存,所以无论您做什么,都要对代码进行一些更改。所以把它放在其他地方,比如分布式缓存等。当有人更改配置时,更新缓存,当您需要读取从缓存读取的设置时。传播/同步由缓存本身负责。

我们目前决定使用NCache,因为我们的web服务器场有4台web服务器。这个第三方缓存工具可以与负载平衡器完美配合,并且易于配置(只是它的快速版本是免费的。对于专业版和企业版,只有开发人员机器是免费的)。它也非常快速和稳定。必须在每台服务器上设置nCache,并将负载平衡器设置为与所有服务器一起工作。希望有帮助。

谢谢@blowdart。我们查看了AppFabric和NCache,但最终决定每10分钟进行一次投票。一旦系统运行,配置更改是如此罕见,以至于我们认为不值得添加另一个第三方组件。尽管如此,我还是喜欢AppFabric,如果我们真的需要一个分布式缓存,那么把它放在我们的后口袋里就好了。