作者:等不到的口琴\
链接: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开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞+转发哦!