TwemProxy是一個Redis的中間件代理,具有很多[有用的功能](http://cloudaice.com/twemproxy-explore/),可以暫時替代一部分Redis Cluster的功能:
2??支持**失敗節點自動刪除**
2??可以設置重新連接該節點的時間
2??可以設置連接多少次之后刪除該節點
2??該方式適合作為cache存儲
2??支持設置HashTag
2??通過HashTag可以自己設定將兩個KEY hash到同一個實例上去。
2??減少與redis的直接連接數
2??**保持與redis的長連接**
2??可設置代理與后臺每個redis連接的數目
2??**自動分片到后端**多個redis實例上
2??多種hash算法
2??可以設置后端實例的權重
2??避免單點問題
2??可以平行**部署多個代理**層,client自動選擇可用的一個
2??支持狀態監控
2??可設置狀態監控ip和端口,訪問ip和端口可以得到一個json格式的狀態信息串
2??可設置監控信息刷新間隔時間
2??高吞吐量
2??連接復用,內存復用。
2??**將多個請求組成redis pipelining**統一向redis請求
### 安裝問題解決
TwemProxy的tarball分發包在Google?Code上,無法下載了…只能從GitHub上下載源碼包進行手動編譯了。安裝、升級了autoconf(2.64以上,下載地址:[http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz](http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz))、automake、libtool后,卻一直無法編譯安裝成功。不是報“Error : possibly undefined macro: AM_INIT_AUTOMAKE”,就是報“Cannot find install-sh, install.sh, or shtool”。最后終于找到[解決辦法1](http://toto-share.com/2012/09/error-possibly-undefined-macro-am_init_automake/)和[解決辦法2](http://toto-share.com/2012/09/configure-error-cannot-find-install-sh-install-sh/)。
最后,我確定在我環境中能成功編譯安裝的方法是:
>tar -xzvf twemproxy-0.4.0.tar.gz
>**aclocal?*(****解決錯誤1)***
>autoconf -f -v –i
>**autoreconf -f -i -Wall,no-obsolete?*(****解決錯誤2)***
>./configure --enable-debug=full
*(可以開啟O3優化:CFLAGS="-O3 -fno-strict-aliasing" ./configure)*
>make
>src/nutcracker –h?*(**查看各種選項)*
### 配置和運行
conf/nutcracker.yml是默認使用的配置文件,打開后能看到配置了alpha, beta, gamma, delta, omega五個連接池作為例子。我們只保留alpha,并配置兩個redis服務器,端口為6379和6479。之后相應地,配置好兩個Redis實例并啟動。現在就可以啟動twemproxy了,直接src/nutcracker就可以運行。
測試一下是否連通了。用redis-cli -p 22121連接到twemproxy的監聽端口,執行一些set命令,然后連接到兩個Redis實例中就能看到有一些key-value保存進去了。