热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么Redis集群要使用反向代理?看这篇就明白了!

点击关注公众号,Java干货及时送达作者:等不到的口琴链接:www.cnblogs.comCourage129p14351545.html

点击关注公众号,Java干货及时送达ff1e4b5ed3700f8045821ad508dce857.png

作者:等不到的口琴
链接:www.cnblogs.com/Courage129/p/14351545.html

如果没有反向代理,一台Redis可能需要跟很多个客户端连接:

074b95974be9c562b5d1c4d537a62756.png

看着是不是很慌?看没关系,主要是连接需要消耗线程资源,没有代理的话,Redis要将很大一部分的资源用在与客户端建立连接上,redis的高可用和可扩展无论是自带的Redis Sentinel还是Redis Cluster都要求客户端进行额外的支持,而目前基本上没有合适的客户端能够做这些事情,客户端来做这些事情也并不合适,它会让维护变得特别困难。

因此在客户端和redis服务端之间加一层代理成了一种理想的方案,代理屏蔽后端Redis实现细节向客户端提供redis服务,可以完美的解决Redis的高可用和扩展性问题,同时代理的引入也使得Redis维护变得更加简单。

于是乎,有了代理:

如何使用代理?

很简单,将请求连接到调度代理器上,由Proxy负责将请求转发到后面的Redis服务实例,图示:

0002f5069cba127a199998b3f400fb4b.png

又有了新的问题,Proxy挂了可咋整?

想成为架构师,这份架构师图谱建议看看,少走弯路。

所以Proxy又需要做集群,甚至前面可以加一层负载均衡,负载均衡嘛,单机也存在单点故障等问题,一个Director肯定不行,搞不好又挂了,所以整一个主备,备机通过KeepAlived来检测主LVS健康状况,出了问题顶上去。

4a38cebb781d126bf346eb991d3420a8.png

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

d997551bce2273dac00e45000c1c62bc.gif

47957dcef8e4b77e42a8605b780d3068.png

开工大吉!再发 10,000 个红包封面

2021 年发生的 10 件技术大事!!

23 种设计模式实战(很全)

换掉 Log4j2!tinylog 横空出世

再见单身狗!Java 创建对象的 6 种方式

劲爆!Java 协程要来了!

重磅官宣:Redis 对象映射框架来了!!

推荐一款代码神器,代码量至少省一半!

程序员精通各种技术体系,45岁求职难!

Spring Boot 3.0 M1 发布,正式弃用 Java 8

Spring Boot 学习笔记,这个太全了!

关注Java技术栈看更多干货

2707ead763aafeb582959aef459e71bd.png

f6a32f4c281dba08885f806659ed296b.gif

获取 Spring Boot 实战笔记!


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • php网站设计实验报告,php网站开发实训报告
    本文目录一览:1、php动态网站设计的关键技术有哪些软件,及搭建步骤需要哪些页面,分别完成 ... [详细]
  • 架构师必读:日均500万数据,如何进行数据存储选型?
    点击上方关注我,选择“置顶或者星标”作者:麦田里的老农来源:https:zhuanlan.zhihu.comp37964096小编公司有一 ... [详细]
  • 架构设计:负载均衡层设计方案之负载场景和解决方式篇
    来自:JAVA入门中https:blog.csdn.netyinwenjiearticledetails46605451在上一篇《标准Web系统的架构分层》文章中&# ... [详细]
  • springcloud:微服务涉及哪些技术、有哪些核心组件(二)
    0.引言上一期我们介绍了什么是微服务,微服务的基础概念,那么本期我们来介绍一下微服务涉及的技术点以及所需要的组件1.微服务涉及哪些技术1.1、基础 ... [详细]
  • Redis学习笔记(二) .NET中使用Redis
    Redis是一个用的比较广泛的KeyValue的内存数据库,新浪微博、Github、StackOverflow等大型应用中都用其作为缓存,Redis的官网为http:redis.io。最 ... [详细]
  • 好东西,负载均衡LVS
    理论知识点一,集群的含义1,多台主机构成,对外表现是这个整体,提供一个访问入口,多台主机组成集群,2,分类①、负载均衡群集②、高可用群集③、高性能运算群集3,负载均衡集群提高系统的 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 数据库基本介绍
    1、数据库基本知识概念:数据库:database(DB),是一种存储数据的仓库数据库是根据数据结构组织、存储和 ... [详细]
  • 实战项目memcached+tomcat+session+nginx在工作中的应用和配置
    环境介绍:公司根据实际需要搭建一个购物网站,当用户购物时可以将不同商品,放到同一个购物车中进行同时付款。环境的搭建:外网用户IP地址:1.1.1.1主机名:fanxiaohui用户 ... [详细]
  • nagios插件内存监控
    为什么80%的码农都做不了架构师?#!usrbinenvpython#-*-coding:utf-8-*-NagiosplugintoreportMe ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了架构文摘:消息队列设计精要相关的知识,希望对你有一定的参考价值。消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具 ... [详细]
  • 基于内存和 Redis 的两级 Java 缓存框架!
    👇👇关注后回复“进群”,拉你进程序员交流群👇👇Java两级缓存框架,可以让应用支持两级缓 ... [详细]
author-avatar
刘国彬2012_380
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有