Asp.net 负载平衡网站的会话管理

Asp.net 负载平衡网站的会话管理,asp.net,session,load-balancing,Asp.net,Session,Load Balancing,我们目前正在使用数据库为用户维护状态信息(在单独的表中)。每次用户访问应用程序(发送请求)时,我们都会从数据库中获取该信息,并在处理请求后将其更新回数据库 这在我们的许多项目中都非常有效,并且非常容易实现,但这增加了调用数据库和保存状态信息的开销 在这种情况下,还有其他更有效的方法吗?微软提供了一个现成的解决方案。这允许您将会话数据存储在由一个或多个Web服务器共享的单个服务器上的内存中。在某些情况下(如果您的会话状态SQL Server负载很大),这可能会给您带来提升 默认情况下,SQL Se

我们目前正在使用数据库为用户维护状态信息(在单独的表中)。每次用户访问应用程序(发送请求)时,我们都会从数据库中获取该信息,并在处理请求后将其更新回数据库

这在我们的许多项目中都非常有效,并且非常容易实现,但这增加了调用数据库和保存状态信息的开销


在这种情况下,还有其他更有效的方法吗?

微软提供了一个现成的解决方案。这允许您将会话数据存储在由一个或多个Web服务器共享的单个服务器上的内存中。在某些情况下(如果您的会话状态SQL Server负载很大),这可能会给您带来提升

默认情况下,SQL Server会话提供程序获取并保存每个项目的会话项。如果您知道您的会话使用情况,但这似乎效率低下(每个请求获取并保存多个项目),则可以在SQL Server上实现一个自定义会话,在请求开始时获取所有会话项目,并在请求结束时保存所有会话项目

其他资源:

  • -经过良好测试的、流行的、非MS缓存
  • -100%托管代码缓存库

    • 有很多策略。我希望您的会话是粘性的(即,在启动时路由到同一台机器)。在这种情况下,您可以在本地(内存中)缓存数据,并仅将DB用于备份(“仅写”)。此外,还有像memcached这样的解决方案提供分布式缓存