實現在內存中的ASP.Net應用程序的web場方案
-
的WCF層的主數據的高速緩存
- 數據在第一次訪問服務層時緩存,比如GetCountryList()方法的緩存'過期設置爲午夜。比方說,緩存鍵是「CountryList_Cache」
- 隨後的所有請求都通過緩存」
- 擔任如果國家列表中使用主屏幕更新,那麼額外的調用,以無效‘CountryList_Cache’和新鮮的數據加載到它
- 下一個電話現在收到更新的國家列表 上述步驟在單個服務器方案中很容易,因爲步驟3只需要一個服務器的緩存過期呼叫。當我們有2個或3個負載均衡的Web服務器時,複雜度會增加,因爲在這種情況下,緩存僅通過一臺服務器更新(通過主屏幕),但必須在所有3臺服務器上失效。
我們提出的解決方案:
我們打算有一個外部服務/ EXE /網頁這將是瞭解所有負載均衡服務器(通過配置文件)。爲了使特定的緩存失效,我們將調用這個外部組件,而這個外部組件又會使所有Web服務器上的相應緩存鍵無效,然後使用最新數據加載緩存。
問題:
雖然上述方法將爲我們工作,我們不認爲這是一個企業級的LOB應用程序乾淨的方法。是否有更好/更乾淨的方式來實現跨多個服務器的緩存過期?
注:
- 我們不希望使用分佈式緩存,由於明顯的性能損失,相比於進程內/內存緩存
- 緩存一直使用System.Runtime實現。緩存
- 我們已經與SQL依賴工作,在單個Web服務器