2009-01-28 98 views
5

场景:向上扩展的ASP.NET会话状态服务器

该网站托管在使用上的每个IIS三台服务器。

所有三个服务器都使用网络负载均衡软件与Windows Server 2003的

所有这三个站点都配置为会话状态存储已被指定为“状态服务器”在单独的服务器群集上。

我被要求扩大“状态服务器”。有没有办法让我可以有多个状态服务器并在它们之间同步状态,所以如果其中一个状态服务器出现故障,其他状态服务器将能够提供状态信息?

回答

6

我会去找memcached。您可以在每台Web服务器上进行设置,然后使用添加的每台新Web服务器进行扩展。我以前在codeplex上找到过几个客户端。

8

我们使用Scale Out State Server为我工作的地方,它的工作非常出色,而且设置起来很简单。我知道微软也在研究一种叫做Velocity的类似产品,但我对此没有任何经验。

SOSS唯一的缺点是你必须为此付出代价 - 但除了与销售和支持团队交流的良好体验之外,我一无所有。如果您最终获得许可,请帮我一个忙,让他们知道Gratis的Daniel给您发送了;)

3

您正在寻找分布式缓存技术。 Microsoft Velocity是由Microsoft发布的示例,用于替换可以分发的Velocity的默认ASP.NET会话状态。还有其他缓存提供程序,如Memcache。

编辑:更新此答案以获取与当前时间更相关的信息,此类功能内置于Windows Azure中,并带有AppFabric产品。关于这方面的一些简要信息可以在这里看到:Windows Server and Azure AppFabric virtual launch May 20th

+0

与速度的问题是,是从未正式发布。现在已经有好几年了,我们拥有的只有CTP。我想知道你对MS有什么支持?此外,Velocity团队博客已经相当长时间了,这让我怀疑MS是否会在不久的将来杀死这个项目。 – 2010-10-28 13:57:26

+0

@Piotr Velocity是AppFabric的前身,它是Azure技术阵容的一部分,引用:http://www.hanselman.com/blog/WindowsServerAndAzureAppFabricVirtualLaunchMay20th.aspx我更新了我的答案,包括此 – 2010-10-28 15:43:02

0

SQL服务器上的会话数据库可以很容易地扩展出来,只需很少的代码&配置更改。您可以将asp.net会话粘贴到会话数据库,并且无论您的服务器场中的哪个Web服务器为请求提供服务,基于会话标识的SQL状态服务器映射的工作都是完美无瑕的。这可能是使用SQL Server向外扩展ASP.NET会话状态的最佳方法之一。欲了解更多信息,请阅读链接

True Scaleout model for session state