超详细 高性能redis集群搭建 —— 第三篇(redis-cluster-proxy搭建)

驿站:

1、超详细 高性能redis集群搭建 —— 第一篇(cluster搭建)

2、超详细 高性能redis集群搭建 —— 第二篇(predixy搭建)

3、超详细 高性能redis集群搭建 —— 第三篇(redis-cluster-proxy搭建)

 

Redis6.0版本在2020年5月2日正式发布了,看起来最令人心动的就是增加了IO多线程支持以及redis-cluster-proxy工具。

我们都知道redis一直是以单线程模型著称。为什么要坚持采用单线程模型呢?总结作者意思就是三个字,没必要。其实原因也很简单,使用 Redis 时,几乎不存在 CPU 成为瓶颈的情况, Redis 主要受限于内存和网络。多线程模型虽然在某些方面表现优异,但是它却引入了程序执行顺序的不确定性,带来了并发读写的一系列问题,增加了系统复杂度、同时可能存在线程切换、甚至加锁解锁、死锁造成的性能损耗。Redis 通过 AE 事件模型以及 IO 多路复用等技术,处理性能非常高。

在Redis6.0之前真的是完全没有应用到多线程吗?其实不是的,在4.0版本之后就已经有用到了多线程,只不过此处的多线程应用只是起到了辅助作用,例如清理脏数据、无用连接的释放、大 Key 的删除等等,核心功能还是单线程的。

Redis6.0的多线程又在处理什么呢?主要是在处理网络I/O,主线程负责接收请求同步等待分发给其他线程处理并等待返回,作者说这部分通常能够占到CPU负载的50%,将这部分通过其他线程进行处理,核心流程依然是单线程,实现起来也比较简单,性价比超高,所以就做了。核心模块依然是单线程完成。

Redis6.0的多线程默认是禁用的,只使用主线程。如需开启需要修改redis.conf配置文件:io-threads-do-reads yes,开启多线程后,还需要设置线程数,否则是不生效的。线程数的设置,官方有一个建议:4核的机器建议设置为2或3个线程,8核的建议设置为6个线程,线程数一定要小于机器核数。还需要注意的是,线程数并不是越大越好,官方认为超过了8个基本就没什么意义了。

redis-cluster-proxy是官方推出的集群代理,与现在市面上的一些主流Redis代理类似,不同的是支持了一些堵塞类的命令如:blpop。话不多说,我们来看下如何安装redis-cluster-proxy。


redis-cluster-proxy安装:

#下载源码(我这里下载的不是稳定版)
wget https://github.com/RedisLabs/redis-cluster-proxy/archive/unstable.zip

#解压
unzip unstable.zip

#进入解压后的目录
cd redis-cluster-proxy-unstable/

#开始安装
make install

安装过程可能会出现error: expected specifier-qualifier-list before '_Atomic之类的错误,这是没有安装GCC4.9以上的版本的原因,安装失败的的可以按照下面的操作安装GCC后重新安装下redis-cluster-proxy即可。

#安装scl源
yum install centos-release-scl

#安装gcc和c++编译器(我这里装的是8)
yum install devtoolset-8-gcc devtoolset-8-gcc-c++

#切换版本
scl enable devtoolset-8 -- bash

到这里redis-cluster-proxy我们就算安装完成了。

修改配置文件的几个重要参数:

#打开配置文件
vim proxy.conf
  • port 7617                                       #端口号
  • bind 0.0.0.0                                   #绑定的ip
  • threads 8                                       #线程数
  • enable-cross-slot yes                    #开启跨node查询
  • cluster 192.168.6.129:7001           #节点地址

启动redis-cluster-proxy

#启动代理
src/redis-cluster-proxy -c proxy.conf

 

启动成功后连接测试一下。

我这里简单执行了几个命令,可以像操作单点redis一样使用,方便了很多。刚出的东西肯定会存在一些隐藏问题,希望官方能尽快推出稳定版。

猜你喜欢

转载自blog.csdn.net/qq_34944535/article/details/106803453