作者:等不到的口琴 \
链接: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 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!