作者:等不到的口琴\
链接: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代理 |
codis | redis集群代理解决方案 |
redis-cerberus | Redis Cluster代理 |
代理具体性能比照
个性 | predixy | twemproxy | codis | redis-cerberus |
---|---|---|---|---|
高可用 | Redis Sentinel或Redis Cluster | 一致性哈希 | Redis Sentinel | Redis Cluster |
可扩大 | Key哈希散布或Redis Cluster | Key哈希散布 | Key哈希散布 | Redis Cluster |
开发语言 | C++ | C | GO | C++ |
多线程 | 是 | 否 | 是 | 是 |
事务 | 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开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞+转发哦!