Redis Twemproxy


主從復制+哨兵解決了讀性能和高可用問題,但沒有解決寫性能問題。

 

Twemproxy將寫請求分配到不同節點處理。

 

Twemproxy是Twitter開源的一個redis和memcache代理服務器。

允許用戶將多個redis服務器添加到一個服務器池里面,並通過用戶選擇的散列函數和分布函數,將來自客戶端的命令請求分發給服務器池中的各個服務器;

通過使用twemproxy我們可以將數據庫分片到多台redis服務器上面,並使用服務器來分擔系統壓力以及數據庫容量,在服務器硬件條件相同的情況下,對於一個包含N台redis服務器的池來說,池中每台平均1/N的客戶端接收命令請求;

向池里添加更多的服務器可以線性的擴展系統處理命令請求的能力,以及系統能夠保存的數據量;

 

Twemproxy安裝配置

Twemproxy可以去github下載
https://github.com/twitter/twemproxy
$ tar xf twemproxy-0.4.0.tar.gz

安裝autoconf
由於CentOS 6.x autoconf版本太低,不用yum安裝,手動安裝
# tar xf autoconf-2.69.tar.gz
# cd autoconf-2.69
# ./configure --prefix=/usr
# make && make install
# autoconf -V #查看是否安裝成功

下載automake
automake-1.15.tar.gz
# ./configure --prefix=/usr
# make && make install

下載libtool
libtool-2.4.5.tar.gz
# ./configure --prefix=/usr
# make && make install

安裝twemproxy
# tar xf twemproxy-0.4.1.tar.gz
# cd twemproxy-0.4.1
# aclocal
# autoconf
# mkdir config
# autoheader
# libtoolize
# automake -a

# ./configure
# make
# make install

安裝完畢

配置文件說明yaml
proxy:
listen: node1:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 20000
hash_tag: "{}"
server_failure_limit: 3
servers:
- node1:6379:1
- node2:6379:1
- node3:6379:1


proxy,服務器池的名字,支持創建多個服務器池
listen: node1:22121,這個服務器池的監聽地址和端口號
hash: fnv1a_64,鍵散列算法,用於將鍵映射為一個散列值
distribution: ketama,鍵分布算法,決定鍵被分布到哪個服務器
redis: true,代理redis命令請求,不給定時默認代理memcached請求
servers,池中各個服務器的地址和端口號及權重
auto_eject_hosts、
server_failure_limit: twemproxy連續3次向同一個服務器發送命令請求都遇到錯誤時,twemproxy就會將該服務器標記為下線,並交由池中其他在線服務器處理


啟動redis服務
3個節點手工啟動
# service redisd start

啟動twemproxy
# nutcracker -d -c /opt/sxt/twemproxy/conf/nutcracker.sxt.yml

連接
# redis-cli -p 22121 -h node1

測試
SET date 2016,這個key落在node1上
SET msg "hello world",這個key落在node2上
SADD numbers 1 3 5 7 9
RPUSH lst a b c d e

Twemproxy散列標簽
set user:{001}:name lisi
set user:{001}:age 5
get user:{001}:name
get user:{001}:age
set 001 abc
get 001
set user:001:age 50

 

Sentinel和Twemproxy整合

redis-mgr

官網說明:https://github.com/changyibiao/redis-mgr

整合了:

redis
redis-sentinel
twemproxy

 

 

redis-twemproxy-agent

官網說明:https://github.com/Stono/redis-twemproxy-agent

  https://jambr.co.uk/2013/09/20/redis-twemproxy-agent

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM