刘兵|NRedis-Proxy 高性能中间件服务

【编者按】:刘兵,花名玄靖,开源技术爱好者。高性能Redis中间件NRedis-Proxy作者,目前研究方向Java中间件,微服务等技术。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

一. NRedis-Proxy 介绍

NRedis-Proxy 是一个Redis中间件服务,第一个Java 版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解耦;以Spring为基础开发自定义标签,让它可配置化,使其更加容易上手;提供RedisServer监控以及自动、收到failover等功能;以netty 作为通信传输工具,让它具有高性能,高并发,可分布式扩展部署等特点,单机器单个RedisServer QPS在9千左右。

二. NRedis-Proxy 技术架构图

a. 系统架构图

640?wx_fmt=png&wxfrom=5&wx_lazy=1

b. 技术架构图

640?wx_fmt=png&wxfrom=5&wx_lazy=1

c. 部署架构图

640?wx_fmt=png&wxfrom=5&wx_lazy=1

三. NRedis-Proxy 优势以及缺点

a. 功能优势

1) 自带连接池,简单稳定且性能高效

2) 支持读写分离,从读按照权重算法

3) 支持灵活主从配置策略

4) 默认支持一致性哈希分片策略,扩展性强

5) 分片策略与从读取策略可自定义化

6) 支持主从自动、手动切换,下次应用程序或者机器重启不会受到任何影响

7) 支持HA 分布式部署,节点可随意扩展

8) 提供redis-monitor小型机器人,监听cpu、jvm、线程、redis 命中率等监控服务

b. 天然缺点

中间件的存在,会自带网络损耗,但是网络带宽足够,可以忽略不计,最主要损耗在于协议解析。相比客户端分片等策略,中间件可以解决客户端应用过多,解决M*N 问题,Redis-Server连接数不够,造成机器CPU性能降低;如下图:

640?wx_fmt=png&wxfrom=5&wx_lazy=1

四. NRedis-Proxy 类逻辑调用图

640?wx_fmt=png&wxfrom=5&wx_lazy=1

五. NRedis-Proxy 配置标签

a. redisProxyNode


序号名称描述
1idSpring 标签唯一标志
2redisProxyHostNRedis-proxy 对外提供主机号
3redisProxyPortNRedis-proxy 对外提供端口号
4algorithm-refNRedis-proxy 多主分片实现类引用
5addressZookpeer 地址


b. redisProxyMaster

序号名称描述
1idSpring 标签唯一标志
2hostRedisServer主主机名
3portRedisServer主端口号
4algorithm-refNRedis-proxy 从分片读取策略类引用
5config-ref连接池配置

c. redisProxyCluster

序号名称描述
1idSpring 标签唯一标志
2hostRedisServer主主机名
3portRedisServer主端口号
4algorithm-refNRedis-proxy 从分片读取策略类引用
5config-ref连接池配置
6weight权重

d. redisPoolConfig

序号名称描述
1idSpring 标签唯一标志
2connectionTimeout连接超时时间
3maxActiveConnection最大活跃连接数
4maxIdleConnection最大空闲连接数
5minConnection最小连接数
6maxWaitMillisOnBorrow取出最大等待时间
7initialConnection初始化连接数
8timeBetweenEvictionRunsMillis每隔多久检查一次连接池
9minEvictableIdleTimeMillis连接池最小生存时间
10minIdleEntries最小空闲数
11testOnBorrow取出是否检测
12testOnReturn归还是否检查
13testWhileIdle空闲是否检测

e. 默认两个分片策略

640?wx_fmt=png&wxfrom=5&wx_lazy=1

六. NRedis-Proxy 部署

a. 部署环境要求

  • JDK 1.7

  • Redis-Server

  • Zookpeer3.4.6

b. 调试步骤

1) 启动Redis Server 主机器

640?wx_fmt=png&wxfrom=5&wx_lazy=1

2) 启动Redis Server

640?wx_fmt=png&wxfrom=5&wx_lazy=1

3) 启动 zookpeer

640?wx_fmt=png&wxfrom=5&wx_lazy=1

4) 启动NRedis-Proxy Server

640?wx_fmt=png&wxfrom=5&wx_lazy=1

5) 使用Redis 命令行连接NRedis-Proxy

640?wx_fmt=png&wxfrom=5&wx_lazy=1

c. 部署方式

maven执行nredis-proxy-bootstrap ,然后再找到 nredis-proxy-server.sh 文件执行

七. redis-monitor监控

a. nredis-proxy监控

640?wx_fmt=png&wxfrom=5&wx_lazy=1

640?wx_fmt=png&wxfrom=5&wx_lazy=1

640?wx_fmt=png&wxfrom=5&wx_lazy=1

b. redis-server监控

640?wx_fmt=png&wxfrom=5&wx_lazy=1

640?wx_fmt=png&wxfrom=5&wx_lazy=1

640?wx_fmt=png&wxfrom=5&wx_lazy=1

c. redis-monitor本身监控

640?wx_fmt=png&wxfrom=5&wx_lazy=1

640?wx_fmt=png&wxfrom=5&wx_lazy=1

640?wx_fmt=png&wxfrom=5&wx_lazy=1

八. redis-monitor 服务治理

a. 定时器配置

640?wx_fmt=png&wxfrom=5&wx_lazy=1

b. 手动服务治理

640?wx_fmt=png&wxfrom=5&wx_lazy=1

c. 自动服务治理

640?wx_fmt=png&wxfrom=5&wx_lazy=1







来源:中生代技术

原文链接


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值