1

我們的網站最近分爲幾個較小的站點,然後分佈在不同的IDC中。推薦緩存更新策略

其中一個站點提供用戶認證和其他用戶相關服務,其他站點通過Web服務訪問它。

在每個遠程獲取數據的站點上,我們創建一個本地高速緩存,以便在每次需要用戶信息時都不需要遠程訪問。

你會推薦什麼樣的緩存更新策略來確保數據的完整性?

+0

您是否需要實時數據完整性,或在實際數據發佈過程中出現延遲? – Vadim 2011-01-20 08:04:07

+0

Thx答覆:)是的,至少它應該接近實時,因爲它是一個SNS應用程序,如果用戶在一個站點更新她的暱稱,應該儘快在另一個站點上進行更改站點。 – satoru 2011-01-20 08:06:42

回答

1

由於您需要更新策略接近實時,所以您肯定需要緩存失效通知引擎。

有它2種可能的實現模式:

1.Pull 主服務器拉孩子的服務器與像"resourceID=34392 not more valid in your cache"通知消息。 此消息應在主服務器上的每個數據更新上發送。

  1. poll 每個子服務器在向用戶提供服務之前向主服務器詢問緩存項目的有效性。 當然,在這種情況下,主服務器應該保持上一次緩存生存期內更新的對象列表,並快速響應"If-object-was-updated"請求。

正如你在這兩種情況下看,你的主服務器應該引起各數據變化的事件。 在第一種情況下,此事件將通過'通知總線'傳送給子服務器,而在第二種情況下,此事件將存儲在recently-updated-objects列表中。 因此,這兩個選項都需要在主服務器上進行一些代碼更改。

對於我來說,第二個選項更容易實現,但它取決於您使用的軟件堆棧。