我正在将站点从单个服务器移动到服务器场,该服务器场由负载均衡器后面的三个Web服务器组成。处理会话管理似乎很容易 - 只需在Load Balancer中使会话“粘滞”(我们评估了基于SQL的会话管理,但已决定继续使用InProc会话管理来提高效率)。
但是,我们还使用了一个相当大的配置对象,我们将其保留在Application空间中(例如Application [ObjName])。由于配置对象是从内存加载的,所以在有人对配置进行更改之前我们没有问题。此时,托管服务器上的应用程序将进行更改,数据库将进行更改。但是,其他两台服务器不会有更改。我们一直在争论有一个“每分钟一次”的轮询规则(例如在新会话上),在会话中保留信息(不是非常有效)等等。所有这些都有严重的缺点。我想知道其他人做了什么。是否可以将应用程序空间保留在SQL Server上,但会话空间是否在inproc中?任何有关如何处理此问题的帮助或见解将不胜感激!
答案 0 :(得分:3)
Application []总是以本地内存为基础,所以无论你要做什么代码更改都要做。所以把它放在其他地方,比如分布式缓存,AppFabric,NCache,memcached.net等。当有人对配置进行更改时更新缓存,当你需要读取设置时从缓存。传输/同步由缓存本身负责。
答案 1 :(得分:0)
我们目前决定使用NCache,因为我们的网络农场有4个Web服务器。这个第三方缓存工具可以与负载均衡器完美配合,并且易于配置(只需它的Express版本是免费的。对于Professional和Enterprise版本,只有Developer Machine是免费的)。它也非常快速和稳定。您必须在每台服务器上设置NChache,并将负载均衡器设置为与所有服务器一起使用。希望它有所帮助。