大家下午好。
我们目前正在从一台 Web 服务器跳转到两台,为了向我们的用户提供无缝故障转移,我们需要对会话做一些事情。
目前,我们正在研究三种不同的方法。
- 使用状态服务器
- 使用 SQL 服务器
- 把所有东西都塞进隐藏的领域
我个人希望看到选项一到位,因为我们没有选项二的专用数据库,选项三似乎是一个混乱的黑客。
我目前面临的问题是我的经理对状态服务器提供的单点故障不满意(我们的 SQL 服务器是复制的,所以那里没有问题)。
关于复制状态服务器或类似的东西可以做些什么吗?
这可能会很痛苦,但我决定关闭 Session 并处理后果。到目前为止,没有什么不可逾越的事情发生。
经过进一步调查,我们决定使用 StateServer 选项。我们仍在寻找如何克服 StateServer 上的单点故障,并且我们已经找到了两个进一步的调查途径。
我们的第一个选择是使用第三方程序来处理会话。我们现在正在研究的一个称为nCache:我认为还有另一个称为 ScaleOut,我们也可以看看。
第二个选项是使用会话状态分区,我们目前也在研究这个选项:http: //msdn.microsoft.com/en-gb/magazine/cc163730.aspx
据我所知,没有办法备份或复制您的 StateServer 服务。在 Web 场中使用 StateServer 时的另一个问题是,如果您的集群允许相同的浏览器在不同的请求上访问不同的机器,那么它们在每个请求上可能有不同的会话数据!(编辑:Martin 在下面指出,您可以通过在多个 Web 服务器之间共享单个 StateServer 实例来解决此问题)。出于您的目的,选项 2 或 3 会更容错,我将提出另一个想法:对于小块数据,请尝试使用 cookie 进行会话存储。
我认为您正在转向另一种架构:多个前端 IIS。
你会用NLB吗?
在我的公司,我们正在将 .NET 应用程序迁移到两个具有网络负载平衡的 IIS,并且应用程序用于在 proc 中进行会话管理。
我们调查过还有另一种选择:
在 Microsoft 咨询之后,最好的选择是 State Server :)
希望能帮助到你!
最好的祝福!
还要确保您没有使用 SQL Server 来存储仅来自数据库的会话状态。如果是这样,您还不如每次都调用数据库。