【问题标题】:How to avoid single point of failure when using state server in ASP.NET websiteASP.NET网站使用状态服务器时如何避免单点故障
【发布时间】:2010-11-12 21:12:30
【问题描述】:

在我当前的项目中,我们必须创建一个网站 (ASP.NET MVC),它可能有足够的负载来要求一个服务器场。我知道如果使用服务器场,会话状态必须存储在其他位置,例如 SQL 服务器数据库或状态服务器。

经过一些实验,我们倾向于使用状态服务器机制,但它会出现单点故障,这让我很紧张。在使用状态服务器时,有什么方法可以避免“单点故障”?

【问题讨论】:

    标签: asp.net asp.net-mvc state-server server-farm


    【解决方案1】:

    您可以设置 SQL Server 复制到另一台机器或使用failover cluster。 这可能会很昂贵,但会使您的数据库组件更加健壮。

    从技术上讲,您的网络服务器机房以及您的网络等都是单点故障。我不一定会比其中任何一个更担心会话状态。

    【讨论】:

    • 我不明白!我相信 ASP.NET 状态服务器不使用 SQL 服务器。那么 SQL Server 故障转移集群如何帮助我呢?但我确实注意到“网络也是单点故障”,这确实是一个有效的观点。
    • Whups,我完全误解了你的问题,我以为你说你要使用 sql server,而不是 state server....我可能会删除这个答案 ;)
    • 我看重第二点(参见单点故障的其他方面),所以可以编辑,但不要删除答案。
    • 好吧,有了这种心态,何必再为冗余而烦恼呢?
    • @UpTheCreek 是对的。这个想法是在您的控制范围内尽可能多地减少潜在的单点故障。托管状态服务器的机器更可能离线或中断,而不是整个房间/网络中断。您还希望能够在不中断的情况下在机器上执行升级/Windows 更新。
    【解决方案2】:

    你可以使用一个叫做session state partitioning的东西,以避免single point of failure。如果这仍然不适合您,那么您可以考虑尝试ASP.NET Velocity 项目,尽管它仅处于 CTP 阶段,但它看起来很有希望。

    如果您想要完全的可扩展性和冗余,那么您可能应该使用 SQL Server 集群。

    【讨论】:

    • 我看不到会话状态分区如何避免单点故障。它所做的只是拥有多个状态服务器,并确保给定的类型 ID 始终保存在同一服务器上,但如果该服务器失败,会话将丢失。但这对于卸载单个状态服务器可能很有用。
    • 另一个基于答案中提供的链接的实现 (en.aspnet-bhs.info/post/State-Server-Partitioning.aspx) 解决了状态服务器故障的问题。
    • 至少,如果一台服务器出现故障,其余的都会启动。速度应该有一个故障转移机制..
    【解决方案3】:

    sharedcache(http://www.sharedcache.comhttp://sharedcache.codeplex.com)有一个会话实现,目前尚未发布,但人们正在使用它。

    【讨论】:

      猜你喜欢
      • 2019-09-20
      • 2013-12-20
      • 2013-09-18
      • 1970-01-01
      • 2020-08-09
      • 2018-02-07
      • 1970-01-01
      • 2010-09-23
      • 2016-06-21
      相关资源
      最近更新 更多