memcached並不像mongodb同樣能夠配置多個節點,而且節點之間能夠」自動分配數據「,即相互通訊,因此咱們在作memcache分佈式集羣的時候要有一個算法來保證當一臺memcache服務器宕機時,不引響web的正常使用。web
1、取模算法算法
好比咱們有3臺memcache服務器,他們的名稱分別爲MC0,MC1,MC2。當存入數據的時候會將key取模(key%3)的值爲0,則存入MC0,爲1存入MC1,爲2存入MC2。若是有一臺宕機了,key的取模爲key%2。當去取數據的時候命中率會下降。如圖所示:mongodb
2、一致性哈希算法服務器
把各服務器節點映射放在鐘錶的各個時刻上, 把 key 也映射到鐘錶的某個時刻上. 該 key 沿鐘錶順時針走,碰到的第 1 個節點即爲該 key 的存儲節點。如圖:分佈式
注意:當b3的memcache服務器宕機了,那麼會將b3的壓力放在c6的服務器上。解決的辦法是引入虛擬節點,若是b3宕機了,那麼會將壓力平均分攤到其餘服務器上。如圖:memcached