快速的單線程代理程序:Twemproxy
Twemproxy是一個快速的單線程代理程序,支持 Memcached ASCII協議和更新的Redis協議。可以通過它減少Memcached或Redis服務器所打開的連接數,twemproxy的特性如下:
支持失敗節點自動刪除 可以設置重新連接該節點的時間 可以設置連接多少次之后刪除該節點 該方式適合作為cache存儲 支持設置HashTag 通過HashTag可以自己設定將兩個KEYhash到同一個實例上去。 減少與redis的直接連接數 保持與redis的長連接 可設置代理與后臺每個redis連接的數目 自動分片到后端多個redis實例上 多種hash算法(部分還沒有研究明白) 可以設置后端實例的權重 避免單點問題 可以平行部署多個代理層.client自動選擇可用的一個 支持redis pipelining request 支持狀態監控 可設置狀態監控ip和端口,訪問ip和端口可以得到一個json格式的狀態信息串 可設置監控信息刷新間隔時間 高吞吐量 連接復用,內存復用。 將多個連接請求,組成reids pipelining統一向redis請求。下面就看看這個神器的安裝過程及用法:
1 下載
git clone https://github.com/推ter/twemproxy.git
2 安裝其他依賴
apt-get install libtool libsysfs-dev autoreconf
3 編譯安裝
cd twemproxy ./configure --prefix=/opt/twemproxy make make install
4 配置
mkdir /opt/twemproxy/conf/ cp conf/nutcracker.yml /opt/twemproxy/conf/5 修改nutcracker.yml配置文件
alpha: listen: 127.0.0.1:22121 hash: fnv1a_64 distribution: ketama auto_eject_hosts: true redis: true server_retry_timeout: 3000 server_failure_limit: 2 servers: - 127.0.0.1:9000:1 - 127.0.0.1:9001:1
6 啟動redis實例
/opt/redis-cluster/bin/redis-server /opt/twemproxy/conf/redis-9000.conf /opt/redis-cluster/bin/redis-server /opt/twemproxy/conf/redis-9001.conf7 啟動twemproxy
/opt/twemproxy/sbin/nutcracker -c /opt/twemproxy/conf/nutcracker.yml

8 測試
9 看看twemproxy的配置文件選項
listen: twemproxy監聽的地址和端口(ip:port)或者是一個絕對路徑sock文件 (/var/run/nutcracker.sock) client_connections: 允許多少redis client連接上來,默認是沒有限制的 hash: 數據分片的hash算法,可以是以下值: one_at_a_time md5 crc16 crc32 (crc32 implementation compatible with libmemcached) crc32a (correct crc32 implementation as per the spec) fnv1_64 fnv1a_64 fnv1_32 fnv1a_32 hsieh murmur jenkins hash_tag: 一個由兩個字符組成的字符串,在key進行hash的時候是key的一部分。例如 "{}" or "$$"。 Hash tag enable mapping different keys to the same server as long as the part of the key within the tag is the same. distribution: 可以的分發模式,值可以是以下: ketama modula random timeout: 連接后端服務或者等待后端服務響應的超時時間 backlog: TCP backlog(連接隊列的大小),默認是512。 backlog隊列總和=未完成三次握手隊列+已經完成三次握手隊列 preconnect: 一個boolen值,用來控制twemproxy是否在redis池中的服務啟動前進行連接,默認是false redis: 一個boolen值,用來控制一個服務器池是傳輸redis協議還是memcache協議,默認是false。 redis_auth: 連接時需要認證 redis_db: 在這個redis服務器池中使用哪個DB,Twemproxy默認連接DB 0 server_connections: 每個服務器的最大連接數,默認我們打開 1個連接 auto_eject_hosts: 一個boolean值,控制一個server達到server_failure_limit故障次數時的動作。默認是false。 server_retry_timeout: 嘗試重連后端服務器的超時時間, 默認是 30000 msec. server_failure_limit: 嘗試連接后端服務器的次數,默認是2. servers: 一個服務器地址列表,由port和權重構成(ip:port:weight)10 nutcracker命令的用法
Options: -h, –help : 查看幫助文檔,顯示命令選項 -V, –version : 查看nutcracker版本 -t, –test-conf : 測試配置腳本的正確性 -d, –daemonize : 以守護進程運行 -D, –describe-stats : 打印狀態描述 -v, –verbosity=N : 設置日志級別 (default: 5, min: 0, max: 11) -o, –output=S : 設置日志輸出路徑,默認為標準錯誤輸出 (default: stderr) -c, –conf-file=S : 指定配置文件路徑 (default: conf/nutcracker.yml) -s, –stats-port=N : 設置狀態監控端口,默認22222 (default: 22222) -a, –stats-addr=S : 設置狀態監控IP,默認0.0.0.0 (default: 0.0.0.0) -i, –stats-interval=N : 設置狀態聚合間隔 (default: 30000 msec) -p, –pid-file=S : 指定進程pid文件路徑,默認關閉 (default: off) -m, –mbuf-size=N : 設置mbuf塊大小,以bytes單位 (default: 16384 bytes)
果然簡單易用,目前來看是比原生的cluster好用一些,不過被反超只是時間問題......
來自:http://my.oschina.net/guol/blog/507399
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!