【Redis代理】- Twemproxy,不来了解一哈?

本文详细介绍了如何下载、编译构建Twemproxy,并配置代理服务,以减少Redis服务端的连接数量。通过实际操作验证了Twemproxy在分布式缓存架构中的作用,展示了其在连接管理和负载均衡上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


🐯Redis系列🐯:

🐯Redis安装教程(保姆级详细图文)
🐯布隆过滤器安装步骤
🐯小记一手 “Redis持久化机制”
🐯手把手带你实操 RDB & AOF
🐯带你 “亲自体验“ Redis主从复制
🐯“Redis哨兵“一撸到底 ,贼爽~
🐯“Redis代理“之Twemproxy


🐯Twemproxy:

Twemproxy(two-em-proxy),又名胡桃夹子,是memcached和redis协议的快速和轻量级代理。

我们先来看一下没有使用代理的客户端和服务端的连接,是不是连接数量巨多反正我麻了,你麻了吗?,所以当有很多客户端连接Redis时,服务端的连接成本会很高

在这里插入图片描述

再来来看看使用了代理的,是不是特别清爽简洁、让人起来就很爽(即使你操作API的时候根本肉眼观察不到)~
所以Twemproxy主要是为了减少到后端缓存服务器的连接数量。再加上协议管道分片,使我们能够水平扩展分布式缓存架构。

在这里插入图片描述

🐯下载

我们在之前的文章里都是通过wget去获取源码包的,这边我们安装一个git

yum -y install git

根目录soft文件夹中把源码下载下来

如果你什么都没做下载github上面代码属于有点靠运气…拉不下来多试几次十几次几十次~~~😁

cd ~/soft

git clone https://github.com/twitter/twemproxy.git

🐯编译构建

安装automakelibtool供后续使用

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:portip:port
hash哈希算法的名称。 可能的值为: one_at_a_timemd5crc16crc32crc32afnv1_64fnv1a_64 (default)fnv1_32fnv1a_32hsiehmurmurjenkins
distribution根据计算的哈希值选择后端服务器的密钥分配模式。 可能的值为:ketama默认)、modula(使用哈希模数服务器来选择后端)、random(为每个请求的每个键选择一个随机后端)
auto_eject_hosts一个布尔值,用于控制在服务器连续失败server_failure_limit 次时是否应临时弹出服务器, 默认false
redis一个布尔值,用于控制服务器池是否使用 redismemcached协议。 默认false
server_retry_timeoutauto_eject_hosts 设置为true时,在临时弹出的服务器上重试之前等待的超时值(以毫秒为单位)。 默认30000毫秒
server_failure_limitauto_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 aaa
OK
127.0.0.1:22121> set fqf231dwqdq aaa
OK
127.0.0.1:22121> set k1 aaa
OK

那我们分别登进三台Redis查看一下,看这几笔set操作是否成功进入不同的机器中(这边的key是我为了给大家演示出效果,所以经过多次尝试后整理出来的刚好分别进入三个Redis实例中的,如果大家自己进行操作的话可能由于算法计算结果的原因,不一定均匀的分布在三台机器中)

redis-cli  -p 6379

在这里插入图片描述

redis-cli  -p 6380

在这里插入图片描述

redis-cli  -p 6381

在这里插入图片描述

分别查看各客户端中所有key

keys *

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🐯结尾语:

本期Redis代理之Twemproxy实战就到这里了~~如果觉得有帮助的话请三连~

🐯下期预告

下期进行Redis代理之Predixy~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倪倪N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值