“Redis代理“之Twemproxy,不来了解一哈?
文章目录
-
- 🐯Redis系列🐯:
- 🐯Twemproxy:
-
- 🐯下载
- 🐯编译构建
- 🐯配置
- 🐯服务环境准备
- 🐯Twemprocy代理实操验证
- 🐯结尾语:
- 🐯下期预告
🐯Redis系列🐯:
🐯Redis安装教程(保姆级详细图文)
🐯布隆过滤器安装步骤
🐯小记一手 “Redis持久化机制”
🐯手把手带你实操 RDB & AOF
🐯带你 “亲自体验“ Redis主从复制
🐯“Redis哨兵“一撸到底 ,贼爽~
🐯Twemproxy:
Twemproxy(two-em-proxy),又名胡桃夹子,是memcached和redis协议的快速和轻量级代理。
我们先来看一下没有使用代理的客户端和服务端的连接,是不是连接数量
巨多
,反正我麻了,你麻了吗?
,所以当有很多客户端连接Redis时,服务端的连接成本会很高
再来来看看使用了代理的,是不是特别
清爽
、简洁
、让人看
起来就很爽(即使你操作API的时候根本肉眼观察不到)~
所以Twemproxy
主要是为了减少
到后端缓存服务器的连接数量
。再加上协议管道
和分片
,使我们能够水平扩展
分布式缓存架构。
🐯下载
我们在之前的文章里都是通过
wget
去获取源码包的,这边我们安装一个git
yum -y install git
到
根目录
的soft
文件夹中把源码下载下来如果你什么都没做下载
github
上面代码属于有点靠运气
…拉不下来多试几次
或十几次
或几十次
~~~😁
cd ~/softgit clone https://github.com/twitter/twemproxy.git
🐯编译构建
安装
automake
和libtool
供后续使用
yum -y install automake libtool
twemproxy
当克隆下代码会以文件夹形式呈现在目录中
cd ~/soft/twemproxy/autoreconf -fvi
构建编译两步骤:
第一步:执行
configure
./configure
第二步:执行
make
make
🐯配置
cd ~/soft/twemproxy/src
将
nutcracker
拷贝到/usr/bin/
目录下,就可以在全局任意地方执行了
cp nutcracker /usr/bin/
老规矩 在
/etc
下创建一个nutcracker
目录用来存放相关配置文件
mkdir /etc/nutcracker
将源码目录
scripts
下的nutcracker.init
文件复制到/etc/init.d
下改名为twemproxy
cd ~/soft/twemproxy/scripts/cp nutcracker.init /etc/init.d/twemproxy
给twemproxy权限
chmod +x /etc/init.d/twemproxy
将
nutcracker
相关配置文件拷贝到我们刚创建的/etc/nutcracker
目录下
cd ~/soft/twemproxy/conf
cp * /etc/nutcracker
cd /etc/nutcracker
备份一下,防止改错了,不备份也可以,出错重新到
~/soft/twemproxy/conf
目录下拷贝一份过来就可以了
cp nutcracker.yml nutcracker_bak.yml
配置文件解析并理解以下键:
键名 | 释义 |
---|---|
listen | 该服务器池的监听地址 和端口 (name :port 或ip :port ) |
hash | 哈希算法的名称。 可能的值为: one_at_a_time 、md5 、crc16 、crc32 、crc32a 、fnv1_64 、fnv1a_64 (default) 、fnv1_32 、fnv1a_32 、hsieh 、murmur 、jenkins |
distribution | 根据计算的哈希值选择后端服务器的密钥分配模式。 可能的值为:ketama (默认 )、modula (使用哈希模数服务器来选择后端)、random (为每个请求的每个键选择一个随机后端) |
auto_eject_hosts | 一个布尔值 ,用于控制在服务器连续失败server_failure_limit 次 时是否应临时弹出 服务器, 默认 为false 。 |
redis | 一个布尔值 ,用于控制服务器池是否使用 redis 或memcached 协议。 默认 为false 。 |
server_retry_timeout | 当 auto_eject_hosts 设置为true 时,在临时弹出 的服务器上重试之前 等待的超时值 (以毫秒为单位)。 默认 为 30000毫秒 。 |
server_failure_limit | 当 auto_eject_hosts 设置为true 时,服务器上导致它被临时弹出的连续故障数 。 默认 为2 。 |
servers | 此服务器池的服务器地址 、端口 和权重 (名称:端口:权重或 ip:端口:权重)列表。 |
修改配置文件,把机器配置进去
vi nutcracker.yml
咱们先不看其他配置,这边暂时用不到,直接删除其他配置,只保留alpha下的配置
光标移动到beta配置上方空行出 按下
d
键+(大写)G
键
alpha: listen: 127.0.0.1:22121 hash: fnv1a_64 distribution: ketama auto_eject_hosts: true redis: true server_retry_timeout: 2000 server_failure_limit: 1 servers: - 127.0.0.1:6379:1 - 127.0.0.1:6380:1 - 127.0.0.1:6381:1
改好后按
Esc
输入:wq
保存退出
🐯服务环境准备
强制关闭所有服务(方式有多种,我
不崇尚
暴力解决,但是有时候暴力解决就是快
。。。。)
ps -ef | grep redis#强制杀掉进程kill -9 PID
像前面文章里那样,
新增
三个窗口,然后分别在对应窗口执行redis-server
命令(无论你是什么shell工具都可以开多个窗口的,我这边用的是Termius
客户端,这个shell工具我一直在用,挺顺手
~~~)
redis-server --port 6379
redis-server --port 6380
redis-server --port 6381
Redis的服务都启动了,我们开启twemproxy代理的服务
service twemproxy start
新开Redis_Twemprocy客户端窗口
redis-cli -p 22121
🐯Twemprocy代理实操验证
执行几笔
set
操作
127.0.0.1:22121> set daa21dwafaf aaaOK127.0.0.1:22121> set fqf231dwqdq aaaOK127.0.0.1:22121> set k1 aaaOK
那我们分别登进三台Redis查看一下,看这几笔
set
操作是否成功进入不同的机器中(这边的key是我为了给大家演示出效果,所以经过多次
尝试后整理出来的刚好
分别进入三个Redis实例中的,如果大家自己进行操作的话可能由于算法计算结果
的原因,不一定
就均匀
的分布在三台机器中)
redis-cli -p 6379
redis-cli -p 6380
redis-cli -p 6381
分别查看各客户端中所有key
keys *
🐯结尾语:
本期Redis代理之Twemproxy实战就到这里了~~如果觉得有帮助的话请
三连
~
🐯下期预告
下期进行Redis代理之Predixy~