面试官:为什么Redis集群要使用反向代理?
业余草
共 1038字,需浏览 3分钟
·
2022-03-09 19:57
你知道的越多,不知道的就越多,业余的像一棵小草!
你来,我们一起精进!你不来,我和你的竞争对手一起精进!
编辑:业余草
cnblogs.com/Courage129/p/14351545.html
推荐:https://www.xttblog.com/?p=5317
为什么要使用反向代理?
如果没有反向代理,一台 Redis 可能需要跟很多个客户端连接:
看着是不是很慌?看没关系,主要是连接需要消耗线程资源,没有代理的话,Redis要将很大一部分的资源用在与客户端建立连接上,redis的高可用和可扩展无论是自带的Redis Sentinel还是Redis Cluster都要求客户端进行额外的支持,而目前基本上没有合适的客户端能够做这些事情,客户端来做这些事情也并不合适,它会让维护变得特别困难。
因此在客户端和redis服务端之间加一层代理成了一种理想的方案,代理屏蔽后端Redis实现细节向客户端提供redis服务,可以完美的解决Redis的高可用和扩展性问题,同时代理的引入也使得Redis维护变得更加简单。
于是乎,有了代理:
如何使用代理?
很简单,将请求连接到调度代理器上,由Proxy负责将请求转发到后面的Redis服务实例,图示:
又有了新的问题,Proxy挂了可咋整?
所以 Proxy 又需要做集群,甚至前面可以加一层负载均衡,负载均衡嘛,单机也存在单点故障等问题,一个Director肯定不行,搞不好又挂了,所以整一个主备,备机通过KeepAlived来检测主LVS健康状况,出了问题顶上去。
Redis代理插件
Redis代理插件有很多,这儿简单介绍几款:
代理详细功能对比
简单来说,predixy 既支持 Redis Sentinel 也支持 Redis Cluster。
后端为Redis Sentinel监控的一组Redis,功能完全等同于原始Redis 后端为Redis Sentinel监控的多组Redis,则有部分功能受限 后端为Redis Cluster,功能完全等同于Redis Cluster
评论