memcached cluster 多租戶方案

因爲memcached 不支持多租戶,不支持多個用戶使用同一個緩存,而且memcached之間也沒有任何交互操做,因此自定義開發memcached 的多租戶的集羣成了必要的選擇,因爲目前網絡上沒有太好的支持多租戶的memcahced集羣方案,因此我本身開發了一套memcahced集羣,支持用戶名和密碼算法

架構說明:緩存

McProxy: 全部外部請求的入口,用戶訪問memcached集羣的入口, McProxy中維護一個路由表map,路由表結構以下: one namespace -> a memcached cluster , McProxy 經過namespace(用戶名)來區分不一樣的集羣網絡

Config Servers: Config servers分爲Master, Slave, Heatbeat三種角色的機器, Heatbeat屬於Slave機器中的一種,Slave機器之間會互相檢測健康狀態. Heatbeat機器定時檢測Master機器的狀態, 若是Heatbeat機器down其餘的slave機器採用搶佔模式,自封Heatbeat角色,並開始從新檢測Master機器.架構

Master機器會維護全部的memcached集羣和McProxy的路由表, Master會定時的檢測全部memcached集羣的狀態, 若是有memcached集羣的server down,Master機器會通知全部McProxy去更新路由表. 若是Master機器down, Heatbeat機器會指定其餘有效的Slave機器,自封Master角色,並開始承擔Master機器的工做併發

Memcached Cluster: Memcached cluster機器之間是不會互相通訊, 可是也會有一個Master多個Slave的角色, 當有寫的請求, McProxy 先將數據寫入memcached Master機器, 而後併發的備份數據到其餘的memcached Slave機器, 當有讀的請求, 採用hash一致性算法,隨機選擇一個cache讀取數據memcached

架構簡易圖以下:spa

輸入圖片說明

相關文章
相關標籤/搜索