如今,许多 ASP.NET 应用程序都部署在多区域(多数据中心)环境中,无论是在云端还是本地。对于这些应用程序,您通常需要将用户从一个区域(数据中心)重定向到另一个区域(数据中心)。然而,您不能承受在此过程中丢失任何 ASP.NET 会话状态。
此类多区域部署通常倾向于将用户会话保留在其创建时所在的同一区域。本质上,它们不会在用户请求层面进行跨区域负载均衡。但是,出于以下原因,您经常需要将用户迁移到其他区域:
您必须以不丢失 ASP.NET 会话状态的方式执行此操作。解决此问题的一种方法是将所有 ASP.NET 会话复制到多个区域。 NCache 提供了一个 广域网复制 此功能。
然而,在许多情况下,跨区域复制所有 ASP.NET 会话可能没有必要——尤其是在您只转移 10% 到 20% 的用户的情况下。在这种情况下,您可能只希望 ASP.NET 会话状态 移动 or 关注用户 当它们被从一个区域重定向到另一个区域时,就会发生这种情况。 NCache 为不需要完全数据同步的多区域架构提供理想的成本优化策略。
| 特性 | 完整广域网复制 | 多区域会话提供商 |
|---|---|---|
| 策略 | 主动-主动同步 | 按需迁移 |
| 带宽使用情况 | 高 (持续后台同步) | 最小 (仅移动重定向用户) |
| 首要目标 | 全球灾难恢复 (DR) | 区域负载均衡与维护 |
| 技术实施 | 服务器端桥接配置 | 客户端 web.config 设置 |
| 最适合 | 应用程序数据/通用状态 | ASP.NET 会话状态(10-20% 重定向) |
此 NCache 提供者 能够处理所有此类情况。它允许您指定您的 web.config中 文件,然后当用户被重定向到另一个区域时,他们的 ASP.NET 会话将从源区域分布式缓存移动到目标区域分布式缓存。
NCache 是一个非常快速和可扩展的.NET 开源分布式缓存。 它通过允许您在运行时添加更多缓存服务器并线性扩展来处理极端事务负载。 NCache 还提供智能缓存复制,因此如果 Web 服务器或缓存服务器出现故障,您不会丢失任何 ASP.NET 会话状态。
此 NCache 多区域会话提供程序使用“镜像”逻辑来维护跨全球数据中心的会话连续性。这允许您在 ASP.NET 中定义一个主 ASP.NET 会话状态缓存和多个辅助 ASP.NET 会话状态缓存。 web.config中 如下。请注意,对于每个地区, “primaryCache” 是不同的。
<ncache>
<sessionLocation>
<primaryCache id="LondonCache" sid-prefix ="LDC"/>
<secondaryCache id="NewYorkCache" sid-prefix="NYC"/>
<secondaryCache id="TokyoCache" sid-prefix="TKC"/>
</sessionLocation>
</ncache>
所有 ASP.NET 会话最初存储在其 “primaryCache”。然后,当用户被转移到另一个区域时,多区域 ASP.NET 会话状态提供程序 NCache 该区域中的 Session 注意到此 ASP.NET Session 来自另一个区域。并且,它连接到相应的 “secondaryCache” 并将 ASP.NET 会话移至其 “primaryCache” 因此可以从这里获取。
首先,无需编程即可使用 NCache 作为您的多区域 ASP.NET 会话状态提供程序。您只需修改您的 web.config中 并指定 NCache 作为您的会话状态提供程序 (SSP)。请参阅配置页面 多区域 ASP.NET 会话状态提供程序。 该 NCache 多区域会话提供程序通过消除广域网复制开销并确保跨区域故障转移期间 100% 的会话持久性来优化应用程序性能。主要优势包括: