2013-07-24 200 views
3

我們有一個非常簡單的AppFabric設置,其中有兩個客戶端 - 讓我們稱它們爲服務器A和服務器B.服務器A也是主導緩存主機,並且服務器A和B都啓用了本地緩存。我們希望能夠更新來自服務器B的項目,並在30秒內將該更改傳播到服務器A的本地緩存(例如)。AppFabric同步本地緩存

據我所知,似乎有越來越傳遞給客戶端的變化的兩種不同的方式:

  1. 在客戶端緩存設置超時驅逐項目每X秒。在該項目下一個請求會從主機緩存拿到項目,因爲在本地緩存中沒有該項目
  2. 啓用通知和有效訂閱從緩存主機

獲得更新。如果我的要求是要在30秒內獲得所有客戶端的更新,那麼在本地高速緩存上設置超過30秒的超時時間似乎是使用上述選項#1時唯一的選擇。由於緩存的大小,這將無法有效驅逐所有的緩存(其中99.99%可能在最近30秒內沒有改變)。

我認爲我們需要實現的是上面的選項#2,但我不確定我是否理解這是如何工作的。我已經閱讀了所有的msdn文檔(http://msdn.microsoft.com/en-us/library/ee808091.aspx)並查看了一些示例,但是我仍然不清楚是否真的有必要編寫自定義代碼,或者僅當您想要進行額外處理時才這樣做。

所以我的問題是:是否有必要添加代碼到現有的應用程序,如果想通過通知傳播到所有本地緩存​​更新,或者是回調功能只是一個額外的處理方式或代碼,如果通知被推倒?我可以只啓用通知並在客戶端設置適當的輪詢間隔,而且事情會正常工作嗎?

它似乎是默認行爲(啓用通知時)應該是在每個輪詢間隔自動下拉新鮮項目。

回答

0

我跑了一些測試,很高興地說,你不需要編寫任何代碼來確保所有的客戶端保持同步。如果你設置以下的集羣配置的子元素:

在你需要在元素上設置同步=「NotificationBased」客戶端配置。

客戶端配置中的元素將告訴客戶端應該多久檢查一次服務器上的新通知。在這種情況下,客戶每隔15秒會檢查一次通知並下拉任何已更改的項目。

我猜你可以添加到你的應用程序的回調邏輯,以防萬一你想添加自己的特殊邏輯(比如每次在緩存中更改項目時給總裁發電子郵件)。