NRedis-Proxy 高性能Redis 中间件服务原理解析

简介: 受飞凡电商技术负责人刘兵先生的独家授权,在csdn博客我原创发表《NRedis-Proxy 高性能Redis 中间件服务》的架构原理,以及项目开源介绍。一、 NRedis-Proxy 介绍NRedis-Proxy 是一个Redis中间件服务,第一个Java 版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解耦;以Spring为基础开发自定义标签,让它可配置化,使其更加容易上手;以netty 作为通信传输工具,让它具有高性能,高并发,可分布式扩展部署等特点,单片性能损耗约5%左右。

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

1、redisProxyNode

这里写图片描述

2、redisProxyMaster
这里写图片描述

3、redisProxyCluster
这里写图片描述

4、默认两个分片策略
这里写图片描述

六、NRedis-Proxy 使用场景

1、项目初始团队 当一个公司成立一个研发初始团队,对于互联网公司,研发时间周期短,迭代快,没有时间与资源研发基础中间件,如果有成熟的中间服务,不参合业务代码,与应用解耦,让研发专心专一研发业务本身 ,同时又能够让后期上线业务稳定。NRedis-Proxy是一个高性能且稳定中间件服务,第一个真正意义Java 版本Redis中间件,让研发团队既可以学习,又可控!
2、秒杀场景,应用服务较多,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、部署环境要求 JDK 1.7 Redis-Server Zookpeer3.4.6
3、调试步骤 a、启动Redis Server 主机器
这里写图片描述

b、启动Redis Server
这里写图片描述

c、启动 zookpeer
这里写图片描述

d、启动NRedis-Proxy Server
这里写图片描述

e、使用Redis 命令行连接NRedis-Proxy
这里写图片描述

g、部署方式 执行nredis-proxy-sample 中 sing.sh 文件
八、 NRedis-Proxy 未来规划

1、Redis Server 集群监控报警 2、NRedis-Proxy页面可控制流量以及RedisServer主从切换
九、项目开源地址

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

目录
相关文章
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
缓存 监控 中间件
Django中间件自定义开发指南:从原理到实战的深度解析
Django中间件是Web应用的“交通警察”,在请求与响应过程中进行全局处理,适用于身份验证、日志记录、性能监控等功能。本文详解中间件的工作原理、开发步骤及实战案例,帮助开发者掌握自定义中间件的构建方法,提升Django应用的可维护性与扩展性。
661 0
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
1094 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
机器学习/深度学习 缓存 自然语言处理
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
Tiktokenizer 是一款现代分词工具,旨在高效、智能地将文本转换为机器可处理的离散单元(token)。它不仅超越了传统的空格分割和正则表达式匹配方法,还结合了上下文感知能力,适应复杂语言结构。Tiktokenizer 的核心特性包括自适应 token 分割、高效编码能力和出色的可扩展性,使其适用于从聊天机器人到大规模文本分析等多种应用场景。通过模块化设计,Tiktokenizer 确保了代码的可重用性和维护性,并在分词精度、处理效率和灵活性方面表现出色。此外,它支持多语言处理、表情符号识别和领域特定文本处理,能够应对各种复杂的文本输入需求。
1796 6
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
|
传感器 人工智能 监控
反向寻车系统怎么做?基本原理与系统组成解析
本文通过反向寻车系统的核心组成部分与技术分析,阐述反向寻车系统的工作原理,适用于适用于商场停车场、医院停车场及火车站停车场等。如需获取智慧停车场反向寻车技术方案前往文章最下方获取,如有项目合作及技术交流欢迎私信作者。
1262 2
|
开发框架 监控 JavaScript
解锁鸿蒙装饰器:应用、原理与优势全解析
ArkTS提供了多维度的状态管理机制。在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。
601 2
|
负载均衡 JavaScript 前端开发
分片上传技术全解析:原理、优势与应用(含简单实现源码)
分片上传通过将大文件分割成多个小的片段或块,然后并行或顺序地上传这些片段,从而提高上传效率和可靠性,特别适用于大文件的上传场景,尤其是在网络环境不佳时,分片上传能有效提高上传体验。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
1101 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1737 29

热门文章

最新文章

推荐镜像

更多
  • DNS