處理假設我有在開始2個分佈式緩存節點(節點A,B),並且當我添加一個新節點C,鍵的一部分被重新映射和由於一致的哈希只有一些。陳舊數據與分佈式緩存/一致的散列
假設與關鍵「富」的值最初在服務器A現在是映射到服務器C
當我終於刪除節點C,關鍵應該被映射到重新節點A,但那時節點A只包含陳舊的數據。
那麼,沖洗數據是解決這個問題的唯一方法?
處理假設我有在開始2個分佈式緩存節點(節點A,B),並且當我添加一個新節點C,鍵的一部分被重新映射和由於一致的哈希只有一些。陳舊數據與分佈式緩存/一致的散列
假設與關鍵「富」的值最初在服務器A現在是映射到服務器C
當我終於刪除節點C,關鍵應該被映射到重新節點A,但那時節點A只包含陳舊的數據。
那麼,沖洗數據是解決這個問題的唯一方法?
我認爲你唯一需要處理陳舊的數據是...什麼都沒有!你知道如果你引入一個新的服務器,部分緩存將失效。就這樣!讓memcached在那一刻到來時擺脫陳舊的數據!另一件事是,你不能自己擺脫陳舊的對象,因爲你不知道哪個服務器存儲該對象(感謝一致的哈希算法)。
希望能回答你的問題。
你的問題歸結爲「你的緩存中的數據是陳舊的」;所以如何糾正它?
所以你需要更新緩存最新值。我不認爲有這個選擇。 根據您的系統要求,您可以考慮採用不同的方法對其進行優化。