摘要:本文內(nèi)容腦圖如下文章共字,閱讀大約需要分鐘概述是開源的輕量級代理服務(wù)器,本質(zhì)就是一個集群管理工具,主要用來彌補和對集群管理的不足,其完成的最大功勞就是通過在后端減少同緩存服務(wù)器的連接數(shù)從而增加吞吐量。本文先實踐一波讓來一群小弟時的工作情況。
本文內(nèi)容腦圖如下:
文章共 533字,閱讀大約需要 2分鐘 !
twemproxy(nutcracker) 是 Twitter開源的輕量級 memcached / redis 代理服務(wù)器,本質(zhì)就是一個集群管理工具,主要用來彌補 Redis和 Memcached對集群管理的不足,其完成的最大功勞就是通過在后端減少同緩存服務(wù)器的連接數(shù)從而增加吞吐量。我們將 Twemproxy看成一個老大哥,背后 Carry著一群 memcached / redis實例小弟,如此看來,某一程序上也類似于 memcached / redis 的HA。
本文先實踐一波讓 twemproxy 來 Carry一群 memcached小弟時的工作情況。
注: 本文首發(fā)于 My Personal Blog:CodeSheep·程序羊,歡迎光臨 小站
準(zhǔn)備三臺節(jié)點:
節(jié)點 | OS | 角色 |
---|---|---|
192.168.199.77 | CentOS 7.4 | 部署 memcached1實例 |
192.168.199.78 | CentOS 7.4 | 部署 memcached2實例 |
192.168.199.79 | CentOS 7.4 | 部署 twemproxy代理服務(wù)器 |
安裝
yum install memcached
作為后臺服務(wù)運行之
memcached -u root -p 11211 -m 64m -d
安裝 m4工具
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz tar -zvxf m4-1.4.9.tar.gz cd m4-1.4.9 ./configure make make install
安裝 autoconf 工具
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz tar zxvf autoconf-2.69.tar.gz cd autoconf-2.69 ./configure --prefix=/usr/ make && make install
安裝 twemproxy代理
wget https://github.com/twitter/twemproxy/archive/master.zip unzip master.zip mv twemproxy-master twemproxy mv twemproxy /usr/local/ cd /usr/local/ cd twemproxy/ autoreconf -fvi ./configure --enable-debug=full make make install
查看 twemproxy幫助
nutcracker -h
[root@localhost ~]# nutcracker -h This is nutcracker-0.4.1 Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file] [-c conf file] [-s stats port] [-a stats addr] [-i stats interval] [-p pid file] [-m mbuf size] Options: -h, --help : this help -V, --version : show version and exit -t, --test-conf : test configuration for syntax errors and exit -d, --daemonize : run as a daemon -D, --describe-stats : print stats description and exit -v, --verbose=N : set logging level (default: 5, min: 0, max: 11) -o, --output=S : set logging file (default: stderr) -c, --conf-file=S : set configuration file (default: conf/nutcracker.yml) -s, --stats-port=N : set stats monitoring port (default: 22222) -a, --stats-addr=S : set stats monitoring ip (default: 0.0.0.0) -i, --stats-interval=N : set stats aggregation interval in msec (default: 30000 msec) -p, --pid-file=S : set pid file (default: off) -m, --mbuf-size=N : set size of mbuf chunk in bytes (default: 16384 bytes)
準(zhǔn)備 twemproxy配置文件
vim /usr/local/twemproxy/conf/nutcracker.yml
修改配置文件 nutcracker.yml
memcached: listen: 127.0.0.1:22121 hash: fnv1a_64 distribution: ketama timeout: 400 backlog: 1024 preconnect: true auto_eject_hosts: true server_retry_timeout: 30000 server_failure_limit: 3 servers: - 192.168.199.77:11211:1 - 192.168.199.78:11211:1
啟動 tewmproxy服務(wù)
nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml
檢查啟動情況
[root@localhost ~]# netstat -nltp | grep nutcracker tcp 0 0 0.0.0.0:22222 0.0.0.0:* LISTEN 12737/nutcracker tcp 0 0 192.168.199.79:22121 0.0.0.0:* LISTEN 12737/nutcracker
首先通過 twemproxy代理來寫緩存
一連存入了 6個key
[root@localhost conf]# telnet localhost 22121 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is "^]". set key1 0 0 1 1 STORED set key2 0 0 1 2 STORED set key3 0 0 1 3 STORED set key4 0 0 1 4 STORED set key5 0 0 1 5 STORED set key6 0 0 1 6 STORED
查看發(fā)現(xiàn)所有緩存都寫到了 memcached2中
[root@localhost ~]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is "^]". get key1 VALUE key1 0 1 1 END get key2 VALUE key2 0 1 2 END get key3 VALUE key3 0 1 3 END get key4 VALUE key4 0 1 4 END get key5 VALUE key5 0 1 5 END get key6 VALUE key6 0 1 6 END
接下來斷開 memcached2
[root@localhost ~]# ps -aux | grep mem root 634 0.0 0.0 326588 1960 ? Ssl 15:58 0:00 memcached -u root -p 11211 -m 64m -d root 704 0.0 0.0 112676 984 pts/0 S+ 16:01 0:00 grep --color=auto mem [root@localhost ~]# kill -9 634
繼續(xù)通過 twemproxy代理來寫緩存
[root@localhost conf]# telnet localhost 22121 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is "^]". set key9 0 0 1 9 STORED [root@localhost conf]#
此時去memcached1查看:
[root@localhost ~]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is "^]". get key9 VALUE key9 0 1 9 END
我們發(fā)現(xiàn) memcached2斷開后,緩存 key9寫到了 memcached1中,而對于用戶來說,由于是跟 twemproxy代理交互,因此并不能感覺到后端 memcached2實例的下線
我們再重新啟動 memcached2
然后再繼續(xù)通過代理寫數(shù)據(jù):
[root@localhost conf]# telnet localhost 22121 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is "^]". set key10 0 0 1 x STORED set key11 0 0 1 y STORED
然后發(fā)現(xiàn)數(shù)據(jù)又寫到 memcached2中了
[root@localhost ~]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is "^]". get key10 VALUE key10 0 1 x END get key11 VALUE key11 0 1 y END
從上面這個實驗過程可以看出,一臺 memcached實例掛掉后,twemproxy 能自動移除之;而恢復(fù)后,twemproxy 能夠自動識別并重新加入到 memcached 組中重新使用
由于能力有限,若有錯誤或者不當(dāng)之處,還請大家批評指正,一起學(xué)習(xí)交流!
My Personal Blog:CodeSheep 程序羊
我的半年技術(shù)博客之路
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/62043.html
摘要:本文內(nèi)容腦圖如下文章共字,閱讀大約需要分鐘概述是開源的輕量級代理服務(wù)器,本質(zhì)就是一個集群管理工具,主要用來彌補和對集群管理的不足,其完成的最大功勞就是通過在后端減少同緩存服務(wù)器的連接數(shù)從而增加吞吐量。本文先實踐一波讓來一群小弟時的工作情況。 showImg(https://segmentfault.com/img/remote/1460000017056459); 本文內(nèi)容腦圖如下: ...
摘要:自己整理了一篇不同等級面試都問什么的文章,關(guān)注公眾號琉憶編程庫,回復(fù)等級,我發(fā)給你。 你好,是我琉憶。今天是周五了,再上一天班就周末了,提前祝大家周末愉快。嘿嘿。這篇文章是本周Memcache和Redis內(nèi)存數(shù)據(jù)庫??嫉膶n}。本周一和周三更新的文章路徑:PHP面試常考內(nèi)容之Memcache和Redis(1)PHP面試??純?nèi)容之Memcache和Redis(2)本周(2019.2-18至...
摘要:自己整理了一篇不同等級面試都問什么的文章,關(guān)注公眾號琉憶編程庫,回復(fù)等級,我發(fā)給你。 你好,是我琉憶。今天是周五了,再上一天班就周末了,提前祝大家周末愉快。嘿嘿。這篇文章是本周Memcache和Redis內(nèi)存數(shù)據(jù)庫??嫉膶n}。本周一和周三更新的文章路徑:PHP面試??純?nèi)容之Memcache和Redis(1)PHP面試??純?nèi)容之Memcache和Redis(2)本周(2019.2-18至...
摘要:但實際情況是緩存是大型網(wǎng)站的標(biāo)配。以上分析告訴我們緩存架構(gòu)要滿足冷熱分離的特征不滿足,因為冷數(shù)據(jù)可能擠走熱數(shù)據(jù)。另外,眾所周知,緩存架構(gòu)還要滿足讀寫分離的特征也不滿足,因為寫操作會爭搶讀操作的資源。這種風(fēng)格需要緩存系統(tǒng)的支持。 問題背景 略談服務(wù)端緩存設(shè)計 一文說到緩存不是必須的,因為數(shù)據(jù)庫本身就利用了內(nèi)存。但實際情況是緩存是大型網(wǎng)站的標(biāo)配。 雖然經(jīng)驗顯示RDBMS最快時只需0~1ms...
閱讀 3120·2021-11-12 10:36
閱讀 5008·2021-09-22 10:57
閱讀 1776·2021-09-22 10:53
閱讀 2782·2019-08-30 15:55
閱讀 3554·2019-08-29 17:00
閱讀 3410·2019-08-29 16:36
閱讀 2525·2019-08-29 13:46
閱讀 1405·2019-08-26 11:45