乐趣区

关于java:为什么-Redis-集群要使用反向代理-看这篇就明白了

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

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

退出移动版