文档章节

nredis-proxy 高性能Redis 服务中间件

liubingsmile
 liubingsmile
发布于 2016/11/11 19:40
字数 1353
阅读 5658
收藏 174

一、 NRedis-Proxy 介绍

NRedis-Proxy 是一个Redis中间件服务,第一个Java 版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解耦;以Spring为基础开发自定义标签,让它可配置化,使其更加容易上手;以netty 作为通信传输工具,让它具有高性能,高并发,可分布式扩展部署等特点,单片性能损耗约5%左右。

二、 NRedis-Proxy 技术架构图

三、 NRedis-Proxy 优势以及缺点

a)      功能优势

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

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

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

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

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

            6.        支持主从自动切换,提供RedisServer监听服务

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

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

timeout

连接超时时间

5

maxActiveConnection

最大活跃连接数

6

maxIdleConnection

最大空闲连接数

7

minConnection

最小连接数

8

algorithm-ref

NRedis-proxy 从分片读取策略类引用

 

c)      redisProxyCluster

序号

名称

描述

1

id

Spring 标签唯一标志

2

host

RedisServer从主机名

3

port

RedisServer从端口号

4

timeout

连接超时时间

5

maxActiveConnection

最大活跃连接数

6

maxIdleConnection

最大空闲连接数

7

minConnection

最小连接数

8

weight

权重

d)     默认两个分片策略

六、 NRedis-Proxy 使用场景

a)      项目初始团队

   当一个公司成立一个研发初始团队,对于互联网公司,研发时间周期短,迭代快,没有时间与资源研发基础中间件,如果有成熟的中间服务,不参合业务代码,与应用解耦,让研发专心专一研发业务本身 ,同时又能够让后期上线业务稳定。NRedis-Proxy是一个高性能且稳定中间件服务,第一个真正意义Java 版本Redis中间件,让研发团队既可以学习,又可控!

b)     秒杀场景,应用服务较多,RedisServer较少

 

通常静态HTML等内容,是通过CDN的部署,一般压力不大,核心瓶颈实际上在后台请求接口上。这个后端接口,必须能够支持高并发请求,同时,非常重要的一点,必须尽可能“快”,在最短的时间里返回用户的请求结果。面临下面几个问题

1.        怎么样保证读取高性能,满足高并发请求?

2.        怎么样保证数据一致性,保证MySQL 数据不丢失,与Redis 数据保持一致性

3.        RedisServer 连接数不够,应用程序RedisClient 客户端连接数过多,造成Redis Server  机器CPU 性能降低,以至于Redis Server 性能低

4.        Redis Server 机器性能不一样,当大流量风暴 怎么样保障高性能RedisServer 机器 支持支撑 重要的业务实时性,高并发性

解决问题方案如下图:

   

 

1.        怎么样保证读取高性能,满足高并发请求?

使用内存级别NOSQL 数据-Redis,保障高性能高并发

2.        怎么样保证数据一致性,保证MySQL 数据不丢失,与Redis 数据保持一致性

使用MQ 消息以及消息幂等性,采取补偿机制,记录错误日志,补写数据,保障数据最终一致性

3.        RedisServer 连接数不够,应用程序RedisClient 客户端连接数过多,造成Redis Server  机器CPU 性能降低,以至于Redis Server 性能低

使用NRedis-Proxy 集群 部署,对应用程序透明化,保障连接数可用,避免此问题

4.        Redis Server 机器性能不一样,当大流量风暴 怎么样保障高性能RedisServer 机器 支持支撑 重要的业务实时性,高并发性

自定义Redis 分片机制,采用虚拟捅算法以及配置中心系统,当流量一旦来临,在快超过最大容量时,改变分片规则以及流量,把不重要的业务流量涌向低性能机器,充分利用机器性能,保障服务性能.(后续开源)

 

 

七、 NRedis-Proxy 部署

1.      部署架构图

2.      部署环境要求

1:JDK 1.7

2:Redis-Server

3:Zookpeer3.4.6

3.      调试步骤

1.        启动Redis Server 主机器

2.        启动Redis Server

3.        启动 zookpeer

4.        启动NRedis-Proxy Server

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

 

4.        部署方式

执行nredis-proxy-sample 中 sing.sh 文件

 

八、NRedis-Proxy 未来规划

1:Redis Server 集群监控报警

2:NRedis-Proxy页面可控制流量以及RedisServer主从切换

九、项目地址

 http://www.oschina.net/p/nredis-proxy

 

© 著作权归作者所有

liubingsmile

liubingsmile

粉丝 117
博文 4
码字总数 6229
作品 7
朝阳
高级程序员
私信 提问
加载中

评论(17)

liubingsmile
liubingsmile 博主

引用来自“吕兵阳”的评论

引用来自“liubingsmile”的评论

引用来自“吕兵阳”的评论

你好,我想问下和twemproxy有什么区别。
有意见可以私聊哦~

好的,感谢。有空看下目前我们线上系统采用的是tw做的集群,很稳定。没有什么问题。

回复@吕兵阳 : nice
吕兵阳
吕兵阳

引用来自“liubingsmile”的评论

引用来自“吕兵阳”的评论

你好,我想问下和twemproxy有什么区别。
有意见可以私聊哦~

好的,感谢。有空看下目前我们线上系统采用的是tw做的集群,很稳定。没有什么问题。
liubingsmile
liubingsmile 博主

引用来自“吕兵阳”的评论

你好,我想问下和twemproxy有什么区别。
有意见可以私聊哦~
liubingsmile
liubingsmile 博主

引用来自“吕兵阳”的评论

你好,我想问下和twemproxy有什么区别。
主要是分片可以自定义扩展灵活,以及未来版本主从切换自动化
逝水巟言
逝水巟言
支持!!!
吕兵阳
吕兵阳
你好,我想问下和twemproxy有什么区别。
zzuqiang
zzuqiang
从common-rpc开始关注,一直感觉源码包的定义可以再优化一下哈哈
liubingsmile
liubingsmile 博主

引用来自“aspboy”的评论

不错 学习了 有成功案例吗 ?
有,已经在生产环境使用
aspboy
aspboy
不错 学习了 有成功案例吗 ?
liubingsmile
liubingsmile 博主

引用来自“Fx_demon”的评论

支持动态扩容吗?

回复@Fx_demon : 支持,可以使用h5,nginx,vip,haproxy
nredis-proxy 高性能Redis 服务中间件

一、 NRedis-Proxy 介绍 NRedis-Proxy 是一个Redis中间件服务,第一个Java 版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解耦;以Spring为基础开发自定义标签,让它可配...

庞陆阳
2016/11/15
209
0
NRedis-Proxy 高性能Redis 中间件服务原理解析

受飞凡电商技术负责人刘兵先生的独家授权,在csdn博客我原创发表《NRedis-Proxy 高性能Redis 中间件服务》的架构原理,以及项目开源介绍。 一、 NRedis-Proxy 介绍 NRedis-Proxy 是一个Redis...

colincheng
2016/11/13
0
0
commonrpc/redis-monitor

NRedis-Proxy1.1 final 高性能中间件服务 一、 NRedis-Proxy 介绍   NRedis-Proxy 是一个Redis中间件服务,第一个Java 版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解...

commonrpc
2017/01/16
0
0
nredis-proxy 1.1-final 发布分布式监控

nredis-proxy 1.1-final 发布了。nredis-proxy 是一个以 redis 协议为主的高性能稳定的代理中间件服务,不侵入业务代码,与业务毫无联系,不需要改任何应用代码,天然支持分布式部署。 nred...

liubingsmile
2017/01/25
445
0
高性能Redis中间件服务--nredis-proxy

nredis-proxy 是一个以redis 协议为主的高性能稳定的代理中间件服务,不侵入业务代码,与业务毫无联系,不需要改任何应用代码,天然支持分布式部署。 一:功能特点: 1:自带连接池,性能高效...

liubingsmile
2016/11/10
8.6K
6

没有更多内容

加载失败,请刷新页面

加载更多

离线环境玩Docker-镜像篇

接上一篇。之前联网环境的Docker已经安装成功了,那么一切都好办,思路就是把Docker镜像保存为文件,然后放到不能联网的电脑上面,导入镜像即可。 第一步:导出Docker镜像,这里以showdoc为例...

RippleChan
9分钟前
4
0
Spring Boot + Jpa + Thymeleaf 综合实践(增删改查示例)

在前面课程中,我们学习了 Spring Boot Web 开发、JPA 数据库操作、Thymeleaf 和页面交互技术,这节课综合这些内容做一个用户管理功能,包括展示用户列表(分页)、添加用户、修改用户和删除...

zw965
11分钟前
6
0
学习WEB前端开发是选择自学还是去培训机构?

WEB前端开发是目前最火的行业之一,竞争很大,工资很高,未来发展也极好。 我做WEB开发有很长一段时间,现在经常看见大家在留言问我想转行学习WEB前端但是不知道是选择自学,还是选择培训。 ...

说雾
27分钟前
6
0
redis匹配key并设置过期时间命令

redis-cli keys 'session*' | xargs -I {} redis-cli expire {} 1296000

为何不可1995
28分钟前
2
0
单点登录针对 vue 单页面模式下的 hash 问题

由于 hash 模式下,#/ 后面的参数无法传递到后台。 hash、hashchange事件 1、hash即URL中"#"字符后面的部分。   ①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或nam...

jxlgzwh
30分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部