1

我有一个静态存储库,在内存中存储了一个大型 XML 文件结构,并且在 MVC 应用程序中仅加载一次。该应用程序托管在具有 2 个实例的 Azure (Paas) 上。我们有一个设计工具,用于添加更多内容或从该存储库中删除内容。我们发现的挑战是,一旦添加了东西,我们需要通过拆除存储库并重新创建它来重新加载存储库。这可行,但会留下一个问题,即静态存储库仅在服务器 A 上刷新,而不在服务器 B 上刷新。如果请求发送到服务器 B,用户不会看到该更改,因为它尚未更新。On;y 两个实例上的 IIS 重置解决了这个问题。我曾尝试使用 Session 状态来存储存储库,但是当我们用作将值存储在数据库表中的自定义 Session 提供程序时,会在每个页面请求上调用 session_start 事件,从而导致性能问题。有没有人有更优雅的解决方案来更新两台服务器上的存储库并使用任何现代技术。

4

1 回答 1

1

您是否考虑过使用角色内缓存来存储存储库(当然,像您已经在做的那样持久化它)?

您可以使用现有 Web 角色的内存,也可以创建专用缓存角色。缓存将跨越您的所有实例,因此您将从每个实例访问相同的数据。

更进一步:如果您担心角色实例重新启动期间数据丢失(这意味着当实例关闭时您的一些数据将不再在缓存中),您可以在缓存命名空间上启用高可用性. 此时,数据会在实例之间复制,这样您就可以在实例重新启动时幸免于难。

您将在角色属性中找到位于同一位置(或专用)的缓存设置:

在此处输入图像描述

于 2013-05-01T23:04:37.100 回答