magent是一款開源的memcached**伺服器軟體
cd /usr/local
mkdir magent
cd magent/
wget
tar zxvf magent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#libs = -levent#libs = -levent -lm#g" makefile
make
magent命令引數:
-h this message
-u uid
-g gid
-p port, default is 11211. (0 to disable tcp support)
-s ip:port, set memcached server ip and port
-b ip:port, set backup memcached server ip and port
-l ip, local bind ip address, default is 0.0.0.0
-n number, set max connections, default is 4096
-d don't go to background
-k use ketama key allocation algorithm
-f file, unix socket path to listen on. default is off
-i number, max keep alive connections for one memcached server, default is 20
-v verbose
啟動magent服務
magent -u root -n 4096 -l 127.0.0.1 -p 12000 -s 127.0.0.1:8086 -s 127.0.0.2:8086 -b 127.0.0.1:11213
magent的hash演算法
magent採用的是:consistent hashing原理,consistent hashing如下所示:首先求出memcached伺服器(節點)的雜湊值, 並將其配置到0~232的圓(continuum)上。 然後用同樣的方法求出儲存資料的鍵的雜湊值,並對映到圓上。 然後從資料對映到的位置開始順時針查詢,將資料儲存到找到的第乙個伺服器上。 如果超過232仍然找不到伺服器,就會儲存到第一台memcached伺服器上。
從上圖的狀態中新增一台memcached伺服器。餘數分布式演算法由於儲存鍵的伺服器會發生巨大變化 而影響快取的命中率,但consistent hashing中,只有在continuum上增加伺服器的地點逆時針方向的 第一台伺服器上的鍵會受到影響。
利用magent實現對memecache的分布式管理,搭建一套memcache集群服務
1、前端php對magent的訪問跟對memcache訪問相同,不需要做任何更改,對於插入的key,magent會把值雜湊到各個memcache服務上,只操作magent,不用關心後端處理
2、公司專案應用:南北各10臺前端,南北各部署一套magent服務,主要是考慮電信網通的跨網訪問
以北方為例,每個前端安裝memcached服務(大記憶體機器可以啟動多個服務),每個前端都安裝magent服務,後端掛載全部機器的memcached服務,啟動引數:magent -p 12000 -s 127.0.0.1:8086 -s 127.0.0.2:8086 -s 127.0.0.3:8086.......-s 127.0.0.10:8086,所有前端配置都是相同的,任何乙個前端只需訪問本地埠的magent,這樣的memcache集群對應用帶來很大便利.
比如專案的基本配置資訊,早期策略只能在中控機生成配置檔案,同步到各個前端,沒有辦法把配置資訊放到快取中,因為各個前端的memcache是不共享的,一台機器快取更新,其它機器是不更新的,用程式去控制更新,還是存在不穩定因素,而且隨著服務增多,也不便於管理,部署了magent後,就可以解決這個問題,任何乙個前端更新資料=全域性更新
這種部署還可以解決的應用:session共享
專案中多處已經實際應用,magent對memcache的均衡和穩定性都非常不錯,推薦使用
memcache集群服務 memagent配置使用
安裝magent到 usr local 下 cd usr local mkdir magent cd magent wget tar zxvf magent 0.5.tar.gz sbin ldconfig sed i s libs levent libs levent lm g makefile ...
Memcache 集群方案
一 偽集群方案 最常見的做法 memcache安裝後,在一台機器或多台機器上啟動多個例項,客戶端配置memcache節點的ip,port即可。由客戶端實現分布式快取效果,其實是偽集群。memcache節點之間不通訊,無資料備份,負載均衡由客戶端實現,存在單點故障。客戶端可設定故障恢復和故障轉移機制。...
memcache集群使用原則
1 集群節點的儲存方式 1 乙個環狀的概念,將集群節點雜湊到環上 2 權重的影響,影響集群節點在患上的雜湊 2 集群節點擴充和減少 會導致資料遷移 3 乙個專案的客戶端訪問多個memcache集群 需要針對每個集群進行區分 cms後台有這個需求 4 開發注意事項 1 key是string 2 物件必...