一致性哈希算法:是一种分布式算法,常用于负载均衡(twemproxy采用此方法)
解决将key-value均匀分配到众多server上的问题
虚拟节点:解决一致性hash倾斜的问题
twemproxy实现hash分片
通过引入一个代理层,可以将后端的多台redis或Memcached实例进行同一管理与分配,使应用程序只需要在Twemproxy上进行操作,而不用关心后面具体有多少个真实的Redis或Memcached存储
支持失败节点自动删除
减少客户端直接与服务器的连接数量
多种hash算法
多种分片算法:ketama(一致性hash算法的一种实现)
#准备Redis实例
cd /usr/local/redis/
mkdir twemproxy-redis
cp bin twemproxy-redis/redis01 -R
#清理redis
cd twemproxy-redis/redis01/
rm -rf dump.rdb
rm -rf appendonly.aof
rm -rf redis.conf
#复制配置文件
cp /root/redis-4.0.14/redis.conf ./
#修改配置文件
vi redis.conf
#redis服务器可以跨网络访问
修改 bind 为 0.0.0.0
#关闭保护模式
修改 protected-mode 为 no
#设置端口号
修改 port 为 7601
#redis后台启动
修改 daemonize 为 yes
#开启aof持久化
修改 appendonly 为 yes
进入上级目录: cd ..
cp -R redis01/ redis02
cp -R redis01/ redis03
再分别改port为 7602 和 7603
启动
./redis-server redis.conf
cd ../redis02
#查看
ps -ef | grep redis
twemproxy安装
#环境准备
yum -y install install autoconf automake libtool
#上传资料中的twemproxy.tar 并安装
#安装包解包
cd root
tar -xf twemproxy.tar
#安装twemproxy
cd twemproxy
autoreconf -fvi
./configure --enable-debug=full --prefix=/usr/local/twemproxy
make
make install
#编写配置文件
cd /usr/local/twemproxy/
mkdir conf run
vi conf/nutcracker.yml
#配置文件内容如下(yml配置要求:1.冒号后面要空格 2.fnv1a 第四个 是数字1不是字母l)
alpha:
listen: 192.168.200.130:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 192.168.200.130:7601:1
- 192.168.200.130:7602:1
- 192.168.200.130:7603:1
#测试配置文件
./sbin/nutcracker -t
#如下应该提示OK
nutcracker:configuration file 'conf/nutcracker.yml' syntax is ok
#启动twemproxy(注意这是一行命令)
./sbin/nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml -p /usr/local/twemproxy/run/redisproxy.pid -o /usr/local/twemproxy/run/redisproxy.log
#查看启动信息
ps -ef | grep nutcracker
#查看端口使用情况
netstat -nltp | grep nutcra
tewmproxy使用
命令行使用,有些命令不能用,如info,因为twemproxy只是一个代理
cd /usr/local/redis/bin/
./redis-cli -h 192.168.200.130 -p 22121
可以测试get、set方法
整合Spring和twemproxy
总结
Redis单机版:数据量、QPS不大的情况使用
Redis主从复制:需要读写分离,高可用的时候使用
Sentinel哨兵:需要自动容错容灾的时候使用
内置集群:数据量比较大,QPS有一定要求的时候使用,但集群节点不能过多
twemproxy集群:数据量,QPS要求非常高,可以使用
(使用成本从上往下递增)