文档章节

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

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

一、 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

粉丝 116
博文 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 中间件服务原理解析

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

colincheng
2016/11/13
0
0
nredis-proxy 高性能Redis 服务中间件

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

庞陆阳
2016/11/15
214
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
448
0
高性能Redis中间件服务--nredis-proxy

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

liubingsmile
2016/11/10
8.6K
6

没有更多内容

加载失败,请刷新页面

加载更多

c语言实现Sqlite3的创建db和增删改查db操作

SQLite,是一款轻型的数据库,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中使用广泛,现在准备学习一下sqlite3的使用方法并写一个测试demo,后面在项目智能...

jorin_zou
1分钟前
0
0
【2019年8月版本】OCP 071认证考试最新版本的考试原题-第2题

choose three Which three are true about the CREATE TABLE command? A) It can include the CREATE...INDEX statement for creating an index to enforce the primary key constraint. B) ......

oschina_5359
4分钟前
0
0
如何在二维码中循环批量插入图片

现在二维码种类比较多,为了突出二维码的个性及吸引客户,很多朋友都喜欢在二维码上插入图片。想要每个二维码都与众不同,但是有的时候需要批量插入图片数量有限,如果制作的二维码比较多的话...

中琅软件
5分钟前
0
0
LTR那点事—AUC及其与线上点击率的关联详解

LTR(Learning To Rank)学习排序是一种监督学习(SupervisedLearning)的排序方法,现已经广泛应用于信息索引,内容推荐,自然语言处理等多个领域。以推荐系统为例,推荐一般使用多个子策略...

达观数据
6分钟前
0
0
IntelliJ 如何显示代码的代码 docs

希望能够在 IntelliJ 代码上面显示方法的 docs。 如何进行显示? 你可以使用 Ctrl + Q 这个快捷键来查看方法的 Docs。 https://blog.ossez.com/archives/3061...

honeymoose
9分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部