我們有一個正在生產中運行的memcached羣集。現在我們用一個Couchbase集羣替代memcached作爲持久緩存層。問題是如何實現這個切入點以及如何預熱Couchbase存儲桶。顯然,我們不能簡單地切換到冷Couchbase,因爲從舊緩存開始會導致整個網站停止運行。Couchbase熱身策略
我在想的一個選擇是首先將Couchbase作爲memcached節點進行預熱。這意味着Couchbase正在使用(非持久性)memcached存儲桶,並像其他任何memcached節點一樣獲取緩存設置/獲取流量。關於它的好處是代碼更改最少(需要配置moxi代理以獲取memcached流量,並將該節點註冊爲memcached節點)。稍後我們會將所有memcached存儲桶轉換爲Couchbase。但不確定Couchbase支持這兩種類型的存儲桶之間的轉換。
第二個選項是在開始時設置持久Couchbase存儲桶(而不是非持久性memcached存儲桶)。我們更改生產緩存客戶端以將所有流量複製到memcached和coucbase羣集。我們監控Couchbase存儲桶,一旦緩存項目達到特定大小,我們完成切換。一個小缺點是更改緩存客戶端的額外複雜性。
想法?在8月9日
編輯2016
正如我後來發現,轉換memcached的桶桶couchbase不Couchbase支持。所以第一種選擇是不可行的。
最後我們決定在每個應用程序主機中設置Client-side (standalone) proxy。我們從主機到主機遞增地增加緩存流量。這樣,網站上的變化就足夠小了。
謝謝,柯克。這是我們最終決定要做的。應用程序方面似乎是一個合理的選擇。現在我們甚至可能會離開這樣的設置並切換到SDK,因爲在代碼中切換緩存客戶端非常麻煩。 –
此外,在切換之前將事務從memcached複製到coucbbase的問題也是如此。這似乎增加了複雜性而不是解決問題。 –