【编者按】:刘兵,花名玄靖,开源技术爱好者。高性能Redis中间件NRedis-Proxy作者,目前研究方向Java中间件,微服务等技术。
一.NRedis-Proxy介绍
NRedis-Proxy是一个Redis中间件服务,第一个Java版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解耦;以Spring为基础开发自定义标签,让它可配置化,使其更加容易上手;提供RedisServer监控以及自动、收到failover等功能;以netty作为通信传输工具,让它具有高性能,高并发,可分布式扩展部署等特点,单机器单个RedisServerQPS在9千左右。
二.NRedis-Proxy技术架构图
a.系统架构图
b.技术架构图
c.部署架构图
三.NRedis-Proxy优势以及缺点
a.功能优势
1) 自带连接池,简单稳定且性能高效
2) 支持读写分离,从读按照权重算法
3)支持灵活主从配置策略
4)默认支持一致性哈希分片策略,扩展性强
5)分片策略与从读取策略可自定义化
6) 支持主从自动、手动切换,下次应用程序或者机器重启不会受到任何影响
7) 支持HA分布式部署,节点可随意扩展
8) 提供redis-monitor小型机器人,监听cpu、jvm、线程、redis命中率等监控服务
b.天然缺点
中间件的存在,会自带网络损耗,但是网络带宽足够,可以忽略不计,最主要损耗在于协议解析。相比客户端分片等策略,中间件可以解决客户端应用过多,解决M*N问题,Redis-Server连接数不够,造成机器CPU性能降低;如下图:
四.NRedis-Proxy类逻辑调用图
五.NRedis-Proxy配置标签
a.redisProxyNode
| 序号 |
名称 |
描述 |
| 1 |
id |
Spring标签唯一标志 |
| 2 |
redisProxyHost |
NRedis-proxy对外提供主机号 |
| 3 |
redisProxyPort |
NRedis-proxy对外提供端口号 |
| 4 |
algorithm-ref |
NRedis-proxy多主分片实现类引用 |
| 5 |
address |
Zookpeer地址 |
b.redisProxyMaster
| 序号 |
名称 |
描述 |
| 1 |
id |
Spring标签唯一标志 |
| 2 |
host |
RedisServer主主机名 |
| 3 |
port |
RedisServer主端口号 |
| 4 |
algorithm-ref |
NRedis-proxy从分片读取策略类引用 |
| 5 |
config-ref |
连接池配置 |
c.redisProxyCluster
| 序号 |
名称 |
描述 |
| 1 |
id |
Spring标签唯一标志 |
| 2 |
host |
RedisServer主主机名 |
| 3 |
port |
RedisServer主端口号 |
| 4 |
algorithm-ref |
NRedis-proxy从分片读取策略类引用 |
| 5 |
config-ref |
连接池配置 |
| 6 |
weight |
权重 |
d.redisPoolConfig
| 序号 |
名称 |
描述 |
| 1 |
id |
Spring标签唯一标志 |
| 2 |
connectionTimeout |
连接超时时间 |
| 3 |
maxActiveConnection |
最大活跃连接数 |
| 4 |
maxIdleConnection |
最大空闲连接数 |
| 5 |
minConnection |
最小连接数 |
| 6 |
maxWaitMillisOnBorrow |
取出最大等待时间 |
| 7 |
initialConnection |
初始化连接数 |
| 8 |
timeBetweenEvictionRunsMillis |
每隔多久检查一次连接池 |
| 9 |
minEvictableIdleTimeMillis |
连接池最小生存时间 |
| 10 |
minIdleEntries |
最小空闲数 |
| 11 |
testOnBorrow |
取出是否检测 |
| 12 |
testOnReturn |
归还是否检查 |
| 13 |
testWhileIdle |
空闲是否检测 |
e.默认两个分片策略
六.NRedis-Proxy部署
a.部署环境要求
JDK1.7
Redis-Server
Zookpeer3.4.6
b.调试步骤
1) 启动RedisServer主机器
2) 启动RedisServer
3) 启动zookpeer4) 启动NRedis-ProxyServer5) 使用Redis命令行连接NRedis-Proxy
c.部署方式
maven执行nredis-proxy-bootstrap,然后再找到nredis-proxy-server.sh文件执行七.redis-monitor监控
a.nredis-proxy监控
b.redis-server监控
c.redis-monitor本身监控
八.redis-monitor服务治理
a.定时器配置
b.手动服务治理
c.自动服务治理
精彩线下活动推荐
当大数据走进天府,会引爆什么呢?当大数据遇到创新,会发生哪些新鲜事呢?当大数据遇到营销,会出现哪些疯狂呢?在大数据时代,我们该如何做才能立于不败之地呢?2017年3月18日,由飞马网与中生代技术联合组织的技术嘉年华--软件技术领域顶级盛宴,将在“天府之国”成都盛大开幕,带你了解新一年的技术走向。
欢迎识别二维码或点击阅读原文了解详情! |