1

我正在考慮使用AppFabric緩存爲我的應用程序,但我不清楚如何讓它做我想做的。我在1個位置有1個SQL集羣。我在全球有200多個應用服務器。我想在每個位置放置一個AppFabric緩存集羣,以便應用程序服務器可以快速訪問SQL對象。除了快速訪問之外,我還需要他們在SQL羣集無法訪問的情況下訪問數據。AppFabric緩存和SQL依賴

有一個HR應用程序直接更新SQL羣集,以便數據發生變化。應用程序服務器還將在許多地方更新AppFabric緩存。所有這些數據需要保持同步。這裏是我的問題:

  1. 當數據庫更改時如何更新緩存?我讀過SQLDependency是我需要的,但我也讀過,一旦有變化,我的整個緩存將被刷新並將不得不重新同步。我只想將更改的對象發送到多個緩存進行更新。

  2. 如果SQL羣集不可訪問且緩存找不到請求的對象,會發生什麼情況?

  3. 有沒有更好的方法來做我想做的事情?這更多的是關於SQL對象可用性而不是性能。關於研究MS同步框架...

回答

1

AppFabric中有類似的SqlCacheDependency緩存依賴對象不支持,但你可以做的反而是創建一個通讀/寫緩存背後提供商的AppFabric。此提供程序知道您的SQL Server數據庫的結構,因此它可以從數據庫中檢索信息可以在更新時更新數據庫。您的應用程序服務器更新AppFabric緩存,因此緩存始終具有最新版本的數據,然後緩存異步將更新寫入數據庫

要應對更新後端數據庫的HR應用程序,可以將緩存中的項目配置爲基於生存時間值過期,並且隨後對緩存的請求將刷新緩存版本。

+0

僅供參考:SqlCacheDependency是ASP.NET的緩存提供程序,與ADO.NET中的SqlDependency對象不同,它允許您掛接自SQL發出的數據已更改的通知時執行的自定義代碼。 – Jaans 2013-05-07 02:04:30

0

我知道你已經發布了這段時間,但有緩存解決方案,可以讓你利用緩存依賴與synschonize與主要數據源。在您的情況下,SQL依賴關係的情況適用於NCache。使用NCache,您可以有多個選項與數據庫同步,並且一旦這樣的選項是「通讀」。所以基本上當數據庫發生變化時,從屬對象會自動從緩存中刪除,並且如果啓用了通讀功能,則緩存服務器會自動恢復對象的新副本。您可以閱讀更多關於Database Synchronization here