教你用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GO實現Redis:GO實現Redis叢集(5)GoRedis
- 教你用multipass快速搭建k8s叢集K8S
- 快速實現 Tomcat 叢集 Session 共享TomcatSession
- LNMP 分散式叢集(四):Memcached 快取伺服器的搭建LNMP分散式快取伺服器
- Kafka 叢集如何實現資料同步?Kafka
- Redis叢集實現方案選型分析Redis
- orleans叢集及負載均衡實現負載
- memcached分散式原理與實現分散式
- 通過memberlist庫實現gossip管理叢集以及叢集資料互動Go
- SpringSession+Redis實現叢集會話共享SpringGseSessionRedis會話
- 11、redis使用ruby實現叢集高可用Redis
- 基於istio實現單叢集地域故障轉移
- 構建MHA實現MySQL高可用叢集架構MySql架構
- Nginx搭建Tomcat9叢集並實現Session共享NginxTomcatSession
- Apache+tomcat實現應用伺服器叢集ApacheTomcat伺服器
- 基於 ZooKeeper 實現爬蟲叢集的監控爬蟲
- 叢集映象:實現高效的分散式應用交付分散式
- (13) SpringCloud-使用Eureka叢集搭建實現高可用SpringGCCloud
- (15) SpringCloud-使用Eureka叢集搭建實現高可用SpringGCCloud
- LVS+Keepalive 實現負載均衡高可用叢集負載
- docker搭建redis叢集和Sentinel,實現故障轉移DockerRedis
- influxDB叢集模式實踐UX模式
- Zookeeper叢集 + Kafka叢集Kafka
- MySQL叢集架構:MHA+MySQL-PROXY+LVS實現MySQL叢集架構高可用/高效能MySql架構
- 搭建zookeeper叢集(偽叢集)
- 實現Kubernetes跨叢集服務應用的高可用
- 利用觀測雲實現 Kubernetes 多叢集可觀測
- 基於Jenkins + Argo 實現多叢集的持續交付JenkinsGo
- Spring Boot Quartz 分散式叢集任務排程實現Spring Bootquartz分散式
- 反問面試官:如何實現叢集內選主面試
- Quartz - Spring整合Quartz實現叢集的定時任務quartzSpring
- MinIO分散式叢集的擴充套件方案及實現分散式套件
- 教你用Perl實現Smgp協議協議
- RabbitMQ叢集運維實踐MQ運維
- Docker Swarm 叢集搭建實踐DockerSwarm
- 利用Nginx+tomcat實現memcached的資源接管NginxTomcat
- PasteSpider的叢集元件PasteCluster(讓你的專案快速支援叢集模式)的思路及實現(含原始碼)ASTIDE元件模式原始碼
- mysql通過kafka實現資料實時同步(三)——es叢集配置MySqlKafka