2013-05-01 15 views
1

我有一個靜態存儲庫,它在內存中存儲一​​個大的XML文件結構,並且在MVC應用程序中只加載一次。該應用程序託管在具有2個實例的Azure(Paas)上。 我們有一個設計工具,用於添加更多的東西或從這個存儲庫中刪除的東西。我們發現的挑戰是,一旦有東西被添加,我們需要通過拆除存儲庫並重新創建它來重新加載存儲庫。這可以工作,但會留下一個問題,即靜態存儲庫僅在服務器A上而不在服務器B上刷新。 如果請求發送到服務器B,則用戶不會看到該更改,因爲它尚未更新。 On; y兩個實例上的IIS重置都會修復此問題。我曾嘗試使用會話狀態來存儲存儲庫,但是因爲我們將其用作存儲數據庫表中值的自定義會話提供程序,所以會在每個導致性能問題的頁面請求上調用session_start事件。 有沒有人有更好的解決方案來更新這兩個服務器上的存儲庫,並使用任何現代技術。Azure靜態存儲庫需要重新加載

回答

1

您是否考慮過使用角色內緩存來存儲存儲庫(當然,堅持它以及您已經在做)?

您既可以使用現有Web角色中的內存,也可以創建專用的緩存角色。緩存將覆蓋您的所有實例,因此您將訪問每個實例的相同數據。

更進一步:如果您擔心在角色實例重新啓動期間數據丟失(這意味着當實例關閉時,您的某些數據將不再位於緩存中),則可以啓用高可用性在緩存命名空間。此時,數據將在實例之間複製,這樣您可以在實例重新啓動後繼續工作。

你會發現在角色屬性共處一地(或專用)緩存設置:

enter image description here

+0

有多容易把這個代碼(任何代碼樣本鏈接)更新?並且這將是MVC中第一次創建它的最佳「事件」? – chugh97 2013-05-01 23:22:16