为什么redis集群要使用反向代理?看这篇就明白了

Java技术栈 Java技术栈     2023-03-09     120

关键词:

作者:等不到的口琴
链接:www.cnblogs.com/Courage129/p/14351545.html

如果没有反向代理,一台Redis可能需要跟很多个客户端连接:

看着是不是很慌?看没关系,主要是连接需要消耗线程资源,没有代理的话,Redis要将很大一部分的资源用在与客户端建立连接上,redis的高可用和可扩展无论是自带的Redis Sentinel还是Redis Cluster都要求客户端进行额外的支持,而目前基本上没有合适的客户端能够做这些事情,客户端来做这些事情也并不合适,它会让维护变得特别困难。

因此在客户端和redis服务端之间加一层代理成了一种理想的方案,代理屏蔽后端Redis实现细节向客户端提供redis服务,可以完美的解决Redis的高可用和扩展性问题,同时代理的引入也使得Redis维护变得更加简单。

于是乎,有了代理:

如何使用代理?

很简单,将请求连接到调度代理器上,由Proxy负责将请求转发到后面的Redis服务实例,图示:

又有了新的问题,Proxy挂了可咋整?

所以Proxy又需要做集群,甚至前面可以加一层负载均衡,负载均衡嘛,单机也存在单点故障等问题,一个Director肯定不行,搞不好又挂了,所以整一个主备,备机通过KeepAlived来检测主LVS健康状况,出了问题顶上去。

Redis代理插件

Redis代理插件有很多,这儿简单介绍几款

predixy高性能全特征redis代理,支持Redis Sentinel和Redis Cluster
twemproxy快速、轻量级memcached和redis代理
codisredis集群代理解决方案
redis-cerberusRedis Cluster代理

代理详细功能对比

特性predixytwemproxycodisredis-cerberus
高可用Redis Sentinel或Redis Cluster一致性哈希Redis SentinelRedis Cluster
可扩展Key哈希分布或Redis ClusterKey哈希分布Key哈希分布Redis Cluster
开发语言C++CGOC++
多线程
事务Redis Sentinel模式单Redis组下支持不支持不支持不支持
BLPOP/BRPOP/BLPOPRPUSH支持不支持不支持支持
Pub/Sub支持不支持不支持支持
Script支持load不支持不支持不支持
Scan支持不支持不支持不支持
Select DB支持不支持支持Redis Cluster只有一个DB
Auth支持定义多个密码,给予不同读写及管理权限和Key访问空间不支持同redis不支持
读从节点支持,可定义丰富规则读指定的从节点不支持支持,简单规则支持,简单规则
多机房支持支持,可定义丰富规则调度流量不支持有限支持有限支持
统计信息丰富丰富丰富简单

简单来说,predixy既支持Redis Sentinel也支持Redis Cluster

  • 后端为Redis Sentinel监控的一组Redis,功能完全等同于原始Redis
  • 后端为Redis Sentinel监控的多组Redis,则有部分功能受限
  • 后端为Redis Cluster,功能完全等同于Redis Cluster

近期热文推荐:

1.1,000+ 道 Java面试题及答案整理(2022最新版)

2.劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4.20w 程序员红包封面,快快领取。。。

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!

你真的完全了解java动态代理吗?看这篇就够了

...算下一篇讲讲Srping的AOP的,但是其中会涉及到Java的动态代理,所以先单独一篇来了解下Java的动态代理到底是什么,Java是怎么实现它的。动态代理看起来好像是个什么高大上的名词,但其实并没有那么复杂,直接从字面就很容易... 查看详情

android原生tablayout使用全解析,看这篇就够了(代码片段)

前言为什么会有这篇文章呢,是因为之前关于TabLayout的使用陆陆续续也写了好几篇了,感觉比较分散,且不成体系,写这篇文章的目的就是希望能把各种效果的实现一次性讲齐,所以也有了标题的「看这篇就... 查看详情

zookeeper入门看这篇就够了(代码片段)

...ooKeeper:Hadoop:使用ZooKeeper做Namenode的高可用。HBase:保证集群中只有一个master,保存hbase:meta表的位置,保存集群中的RegionServer列表。Kafka:集群成员管理,controller节点选举。ZooKeeper应用场景很多分布式协调服务都可以用ZooKeeper... 查看详情

搞懂异地多活,看这篇就够了

...过它,但很少人理解其中的原理。异地多活到底是什么?为什么需要异地多活?它到底解决了什么问题?究竟是怎么解决的?这些疑问,想必是每个程序看到异地多活这个名词时,都想要搞明白的问题。有幸,我曾经深度参与过... 查看详情

搞懂异地多活,看这篇就够了

...f0c;但很少人理解其中的原理。异地多活到底是什么?为什么需要异地多活?它到底解决了什么问题?究竟是怎么解决的?这些疑问,想必是每个程序看到异地多活这个名词时,都想要搞明白的问题 查看详情

搞懂异地多活,看这篇就够了

...f0c;但很少人理解其中的原理。异地多活到底是什么?为什么需要异地多活?它到底解决了什么问题?究竟是怎么解决的?这些疑问,想必是每个程序看到异地多活这个名词时,都想要搞明白的问题 查看详情

集合类--最详细的面试宝典--看这篇就够用了(java1.8)

https://www.cnblogs.com/yysbolg/p/9230184.html为什么hashset不安全,因为内部实现用到了hashmaphashmap的put方法不安全,resize方法不安全,同是resize()方法时,如果调用get,可能会产生环形的链表为什么一定要是2的位数??为了能让HashMap存... 查看详情

深入理解java集合框架,看这篇就差不多了

...但是它们缺少一个核心的,统一的主题。由于这个原因,使用Vector类的方式和使用Properties类的方式有着很大不同。集合框架被设计成要满足以下几个目标:该框架必须是高性能的。基本集合(动态数组,链表,树,哈 查看详情

javamap集合面试题,看这一篇就够了

...是Nginx,谈谈个人都理解,项目中是否用到,为什么要用,有什么优点?Nginx,是一个Web服务器和反向代理服务器用于HTTP、HTTPS、SMTP、POP3和IMAP协议。主要功能如下:1、正向、反向代理2、负载均衡、分... 查看详情

监听器入门看这篇就够了

...对象发生上述事件后,监听器某个方法将立即被执行。。为什么我们要使用监听器?监听器可以用来检测网站的在线人数,统计网站的访问量等等!监听器组件监听器涉及三个组件:事件源,事件对象,事件监听器当事件源发生... 查看详情

硬核redis总结,看这篇就够了!(代码片段)

高清思维导图已同步Git:https://github.com/SoWhat1412/xmindfile总感觉哪里不对,但是又说不上来会发现底层就是个双端链表,该链表最大长度为2^32-1。常用就这几个组合。lpush+lpop=stack先进后出的栈 lpush+rpop=queue先进先出的队列 l... 查看详情

jvm面试题,看这篇就足够了(87题详解)

...tReference的区别?6、JVM选项-XX:+UseCompressedOops有什么作用?为什么要使用7、怎样通过Java程序来判断JVM是32位还是64位?8、32位JVM和64位JVM的最大堆内存分别是多数?9、JRE、JDK、JVM及JIT之间有什么不同?10、解释Java堆空间及GC?11、JV... 查看详情

jvm面试题,看这篇就足够了(87题详解)

...tReference的区别?6、JVM选项-XX:+UseCompressedOops有什么作用?为什么要使用7、怎样通过Java程序来判断JVM是32位还是64位?8、32位JVM和64位JVM的最大堆内存分别是多数?9、JRE、JDK、JVM及JIT之间有什么不同?10、解释Java堆空间及GC?11、JV... 查看详情

jvm面试题,看这篇就足够了(87题详解)

...tReference的区别?6、JVM选项-XX:+UseCompressedOops有什么作用?为什么 查看详情

高性能的本地缓存方案选型,看这篇就够了!

...#xff0c;这一架构也产生了改进,在一些场景下可能单纯使用Redis类的远程缓 查看详情

高性能的本地缓存方案选型,看这篇就够了!

...#xff0c;这一架构也产生了改进,在一些场景下可能单纯使用Redis类的远程缓 查看详情

数据团队做什么,看这篇就够了!

 Datawhale干货 作者:LouisedeLeyritz,译者:追风者随着企业认识到数据对实现业务目标的决定性力量,大多数企业希望将数据置于其业务和产品战略的主导地位。这就需要建立一个强大的数据团队,能够有效地... 查看详情

zookeeper入门看这篇就够了!!(代码片段)

...一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制。1、文件系统Zookeeper维护一个类似文件系统的数据结构: 每个 查看详情