教你用Magent實現Memcached叢集
Magent 是一款開源的 Memcached 代理伺服器軟體,使用它可以搭建高可用性的叢集應用的 Memcached 服務 ,備份 Memcached 資料 |
儘管 Memcached 服務掛掉,前端也能獲取到資料,客戶端先連到 Magent 代理伺服器 ,然後Magent 代理伺服器 在可以連線多臺 Memcached 伺服器,然後可以進行資料的儲存和備份資料。這樣資料就不會丟失,儲存了資料完整性。
安裝Magent
1)下載安裝
cd /usr/local mkdir magent wget tar -zxvf magent-0.6.tar.gz /sbin/ldconfig sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
在ketama.h或magent.c開頭新增
#ifndef SSIZE_MAX #define SSIZE_MAX 32767 #endif make
複製 make 生成的/usr/local/下名為magent的檔案到/usr/bin/
cp magent /usr/bin/magent
檢查是否安裝成功:
./magent -h
代理Memcache
magent -u root -n 51200 -l 192.168.1.90 -p 12000 -s 192.168.1.111:11211 -s 192.168.1.112:11212 -b 192.168.1.112:11211 magent引數說明: -h 幫助說明 -u 使用者 -g gid -p 啟動埠, 預設11211. (0 to disable tcp support) -s 服務memcached地址,ip:port, set memcached server ip and port -b 備份memcached地址,ip:port, set backup memcached server ip and port -l 啟動IP地址,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, set max keep alive connections for one memcached server, default is 20 -v verbose
如上一章,這次透過magent設值
- 分別在11211、11212、11213埠啟動3個Memcached程式,在12000埠開啟magent代理程式;
- 11211、11212埠為主Memcached,11213埠為備份Memcached;
- 連線上12000的magent,根據雜湊演算法,值被寫入11211或11212Memcached和備份11213埠的Memcached;
- 當11211、11212埠的Memcached死掉,連線到12000埠的magent取資料,資料會從11213埠的Memcached取出;
- 當11211、11212埠的Memcached重啟復活,連線到12000埠,magent會從11211或11212埠的Memcached取資料,由於這兩臺Memcached重啟後無資料,因此magent取得的將是空值,儘管11213埠的Memcached還有資料。
快取與DB的同步
比較保險的做法是:查詢的時候從快取中取,add、updae、delete的時候同時操作快取與DB。
當然你也可以定時同步快取與DB的資料,不同的業務應該有不同的選擇。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2690744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Memcached 叢集架構方面的問題架構
- GO實現Redis:GO實現Redis叢集(5)GoRedis
- 教你用multipass快速搭建k8s叢集K8S
- Redis 叢集實現原理探討Redis
- 手把手教你用Docker部署一個MongoDB叢集DockerMongoDB
- Redis叢集實現方案選型分析Redis
- 快速實現 Tomcat 叢集 Session 共享TomcatSession
- orleans叢集及負載均衡實現負載
- Kafka 叢集如何實現資料同步?Kafka
- 用NodeJS實現叢集計算NodeJS
- Apache實現weblogic叢集配置(轉)ApacheWeb
- 通過memberlist庫實現gossip管理叢集以及叢集資料互動Go
- LNMP 分散式叢集(四):Memcached 快取伺服器的搭建LNMP分散式快取伺服器
- 使用Memcached實現Session共享Session
- memcached 分散式實現原理分散式
- 11、redis使用ruby實現叢集高可用Redis
- EMR叢集上capacityscheduler的ACL實現
- memcached分散式原理與實現分散式
- SpringSession+Redis實現叢集會話共享SpringGseSessionRedis會話
- MongoDB分片儲存的叢集架構實現MongoDB架構
- memagent實現對memcache的初級叢集管理
- Zookeeper叢集 + Kafka叢集Kafka
- Memcached 與 Redis 實現的對比Redis
- memcached與redis實現的對比Redis
- Memcached 分散式快取實現原理分散式快取
- 構建MHA實現MySQL高可用叢集架構MySql架構
- 基於 ZooKeeper 實現爬蟲叢集的監控爬蟲
- 叢集映象:實現高效的分散式應用交付分散式
- docker搭建redis叢集和Sentinel,實現故障轉移DockerRedis
- SmartRoute之大規模訊息轉發叢集實現
- Nginx+tomcat實現叢集跟負載均衡NginxTomcat負載
- Shiro+Redis實現tomcat叢集session共享RedisTomcatSession
- Nginx實現tomcat叢集進行負載均衡NginxTomcat負載
- Nginx+tomcat實現叢集和負載均衡NginxTomcat負載
- CoroSync + Drbd + MySQL 實現MySQL的高可用叢集薦ROSMySql
- 基於istio實現單叢集地域故障轉移
- 反問面試官:如何實現叢集內選主面試
- CentOS下torque叢集配置(二)叢集中配置NFS實現檔案共享CentOSNFS