一、NRedisProxy介绍 NRedisProxy是一个Redis中间件服务,第一个Java版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解耦;以Spring为基础开发自定义标签,让它可配置化,使其更加容易上手;提供RedisServer监控以及自动、收到failover等功能;以netty作为通信传输工具,让它具有高性能,高并发,可分布式扩展部署等特点,单机器单个RedisServerQPS在9千左右。二、NRedisProxy架构图a)系统架构图 b)技术架构图 c)部署架构图 三、NRedisProxy优势以及缺点a)功能优势自带连接池,简单稳定且性能高效支持读写分离,从读按照权重算法支持灵活主从配置策略默认支持一致性哈希分片策略,扩展性强分片策略与从读取策略可自定义化支持主从自动、手动切换,下次应用程序或者机器重启不会受到任何影响支持HA分布式部署,节点可随意扩展提供redismonitor小型机器人,监听cpu、jvm、线程、redis命中率等监控服务b)天然缺点 中间件的存在,会自带网络损耗,但是网络带宽足够,可以忽略不计,最主要损耗在于协议解析。相比客户端分片等策略,中间件可以解决客户端应用过多,解决MN问题,RedisServer连接数不够,造成机器CPU性能降低;如下图: 四、NRedisProxy类逻辑调用图 五、NRedisProxy配置标签a)redisProxyNode 序号 名称 描述 1hrid Spring标签唯一标志 2hrredisProxyHost NRedisproxy对外提供主机号 3hrredisProxyPort NRedisproxy对外提供端口号 4hralgorithmref NRedisproxy多主分片实现类引用 5hraddress Zookpeer地址b)redisProxyMaster 序号 名称 描述 1hrid Spring标签唯一标志 2hrhost RedisServer主主机名 3hrport RedisServer主端口号 4hralgorithmref NRedisproxy从分片读取策略类引用 5hrconfigref 连接池配置c)redisProxyCluster 序号 名称 描述 1hrid Spring标签唯一标志 2hrhost RedisServer主主机名 3hrport RedisServer主端口号 4hralgorithmref NRedisproxy从分片读取策略类引用 5hrconfigref 连接池配置 6hrweight 权重d)redisPoolConfig 序号 名称 描述 1hrid Spring标签唯一标志 2hrconnectionTimeout 连接超时时间 3hrmaxActiveConnection 最大活跃连接数 4hrmaxIdleConnection 最大空闲连接数 5hrminConnection 最小连接数 6hrmaxWaitMillisOnBorrow 取出最大等待时间 7hrinitialConnection 初始化连接数 8hrtimeBetweenEvictionRunsMillis 每隔多久检查一次连接池 9hrminEvictableIdleTimeMillis 连接池最小生存时间 10hrminIdleEntries 最小空闲数 11hrtestOnBorrow 取出是否检测 12hrtestOnReturn 归还是否检测 13hrtestWhileIdle 空闲是否检测e)默认两个分片策略 六、NRedisProxy部署 1。部署环境要求1。1JDK1。71。2RedisServer1。3Zookpeer3。4。6 2。调试步骤2。1启动RedisServer主机器2。2启动RedisServer2。3启动zookpeer2。4启动NRedisProxyServer2。5使用Redis命令行连接NRedisProxy3。部署方式 maven执行nredisproxybootstrap,然后再找到nredisproxyserver。sh文件执行七、redismonitor监控a)nredisproxy监控 b)redisserver监控 c)redismonitor本身监控 八、redismonitor服务治理a)定时器配置 b)手动服务治理 c)自动服务治理