2013-07-22 42 views
0

我正在做一些實驗來確定Memcached在遇到不同類型的錯誤(Memcached節點崩潰,高延遲...)時的態度。在發生崩潰的情況下,failover並不是我所期望的。Brutis和memcached FailOver

對我來說,當memcached客戶端發生崩潰並激活了一些選項時,memcached服務器應該在停止使用已分離的節點之後,只使用剩餘的節點。

在實驗開始時,我使用兩個memcached客戶端和一個服務器與請求發生器,我在它們中存儲10000個請求,並且請求在客戶端節點之間平均分配。

然後,我在一個節點上注入崩潰,其餘節點不會從死節點獲取請求。我想要新的集合,並在剩餘的節點中完成。

請求發生器爲brutis,它每次都做一組和九組獲取:set從1到10000和get相同,但由於之前的重新分區,set設置較慢。

使用的選項是(OPT_REMOVE_FAILED_SERVERS,true)。

我使用的是libmemcached-1.0.16,memcached-1.4.15,而memcached的php版本是2.1.0。

我怎麼能得到一旦驅逐,散列函數只發送到生活節點?

感謝

回答

0

您必須使用一致的散列: $memcache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);

我目前正在測試此,針對PHP5-memcached的:2.0.1和libmemcached:1.0.8,但我有很多問題測試故障轉移選項。

但是,作爲開始,當設置一致性散列時,在死亡服務器上兩次命中後,死亡服務器的所有密鑰都分佈在其他服務器上。