我有一个静态存储库,在内存中存储一个大的XML文件结构,并且只在MVC应用程序中加载一次。该应用程序托管在Azure(Paas)上,有2个实例。 我们有一个设计工具,用于添加更多东西或从此存储库中删除东西。我们发现的挑战是,一旦添加了东西,我们需要通过拆除存储库并重新创建它来重新加载存储库。这可以工作,但是存在一个问题,即静态存储库只在服务器A上刷新而不在服务器B上刷新。 如果请求进入服务器B,则用户不会看到该更改,因为它尚未更新。 On; y两个实例上的IIS重置都可以解决问题。我已经尝试使用Session状态来存储存储库,但是当我们使用自定义Session提供程序将值存储在数据库表中时,会在每个页面请求上调用session_start事件,从而导致性能问题。 有没有人有更优雅的解决方案来更新两台服务器上的存储库并使用任何现代技术。
答案 0 :(得分:1)
您是否考虑使用角色内缓存来存储存储库(当然,您已经将其保留下来了吗?)
您可以使用现有Web角色中的内存,也可以创建专用缓存角色。缓存将跨越所有实例,因此您将从每个实例访问相同的数据。
更进一步:如果您担心在角色实例重启期间数据丢失(这意味着当实例关闭时您的某些数据将不再存在于缓存中),您可以启用高可用性缓存命名空间。此时,数据在实例之间复制,这使您可以在实例重新启动后继续存在。
您可以在角色属性中找到共存(或专用)缓存设置: