推荐观看:

十年架构师实战Redis—用Redis实现:秒杀/抢购/排行榜/推荐系统/抽奖系统!从Redis到分布式架构,通过Redis学AKF划分原则、CAP定理!​www.bilibili.com/video/BV1Wt4y1Q7mA

模式类型

主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)

主从模式原理

同Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。

优点:

1、解决数据备份问题

2、做到读写分离,提高服务器性能

缺点:

1、每个客户端连接redis实例的时候都是指定了ip和端口号的,如果所连接的redis实例因为故障下线了,而主从模式也没有提供一定的手段通知客户端另外可连接的客户端地址,因而需要手动更改客户端配置重新连接

2、主从模式下,如果主节点由于故障下线了,那么从节点因为没有主节点而同步中断,因而需要人工进行故障转移工作

3、无法实现动态扩容

sentinel模式

Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

例如:

优点

1、Master 状态监测

2、如果Master 异常,则会进行Master-slave 转换,将其中一个Slave作为Master,将之前的Master作为Slave

3、Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

缺点:

1、如果是从节点下线了,sentinel是不会对其进行故障转移的,连接从节点的客户端也无法获取到新的可用从节点

2、无法实现动态扩容

cluster模式

在这个图中,每一个蓝色的圈都代表着一个redis的服务器节点。它们任何两个节点之间都是相互连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其进行存取和其他操作。

一般集群建议搭建三主三从架构,三主提供服务,三从提供备份功能。每一个节点都存有这个集群所有主节点以及从节点的信息。

它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。如果某个节点和所有从节点全部挂掉,我们集群就进入faill状态。还有就是如果有一半以上的主节点宕机,那么我们集群同样进入发力了状态。这就是我们的redis的投票机制,具体原理如下图所示:

(1)投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时(cluster-node-timeout),认为当前master节点挂掉.

(2):什么时候整个集群不可用(cluster_state:fail)?

a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

b:如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

原理:

优点:

1、有效的解决了redis在分布式方面的需求

2、遇到单机内存,并发和流量瓶颈等问题时,可采用Cluster方案达到负载均衡的目的

3、可实现动态扩容

4、P2P模式,无中心化

5、通过Gossip协议同步节点信息

6、自动故障转移、Slot迁移中数据可用

缺点:

1、架构比较新,最佳实践较少

2、为了性能提升,客户端需要缓存路由表信息

3、节点发现、reshard操作不够自动化

总结

主从复制是为了数据备份,哨兵是为了高可用,Redis主服务器挂了哨兵可以切换,集群则是因为单实例能力有限,搞多个分散压力,简短总结如下:

主从模式:备份数据、负载均衡,一个Master可以有多个Slaves。

sentinel发现master挂了后,就会从slave中重新选举一个master。

cluster是为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器。

sentinel着眼于高可用,Cluster提高并发量。

1.主从模式:读写分离,备份,一个Master可以有多个Slaves。

2.哨兵sentinel:监控,自动转移,哨兵发现主服务器挂了后,就会从slave中重新选举一个主服务器。

3.集群:为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器,内存/QPS不受限于单机,可受益于分布式集群高扩展性。

原文出处:出自公众号:Java杂记
原文链接:https://mp.weixin.qq.com/s/Q2ghAdE8dg_5TMr2ATj3pg

推荐观看:

十年架构师实战Redis—用Redis实现:秒杀/抢购/排行榜/推荐系统/抽奖系统!从Redis到分布式架构,通过Redis学AKF划分原则、CAP定理!​www.bilibili.com/video/BV1Wt4y1Q7mA

Redis模式对比:主从模式 VS 哨兵sentinel模式 VS Redis cluster模式相关推荐

  1. Linux下的redis的持久化,主从同步及哨兵

    redis持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失, 为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. RDB持久 ...

  2. K8s-K8s部署Redis高可用主从集群+哨兵模式+动态持久化数据

    文章目录 1.引 2.文件结构 3.配置清单 1)`1-ns.yaml` 2)`2-configmap-redis.yaml` 3)`3-configmap-probe.yaml` 4)`4-svc- ...

  3. redis数据库的主从、哨兵和cluster模式的实现原理与搭建详解(win10系统)

    Redis 内存K-V 型数据库 内存占用 redis 的数据保存在内存中,数据变多,内存占用更大.当 redis 服务器停止运行时,数据便会消失. 使用 save 和 bgsave 命令可以将内存中 ...

  4. Mysql主从和redis集群哪个好_Redis的三种模式:主从、哨兵、集群

    前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.普遍用于目前主流的分布式架构系统中,关于redis的详细 ...

  5. Redis高可用:主从复制及哨兵模式

    目录 主从复制 作用 复制原理 使用的方式 哨兵模式 主从切换过程 Redis Sentinel的配置文件 参考 主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器.前 ...

  6. spark的client模式和cluster模式用法上的区别

    运行模式 启动命令 备注 client模式 spark-shell --master yarn 支持shell,client模式可以在 命令行中省去deploy-mode命令项 cluster模式 s ...

  7. Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析

    Redis 的几种常见使用方式包括: 单机模式 主从模式 哨兵模式(sentinel) 集群模式(cluster) 第三方模式 单机模式 Redis 单副本,采用单个 Redis 节点部署架构,没有备 ...

  8. REDIS哨兵【Sentinel】模式+哨兵的核心知识点+redis哨兵主从切换的数据丢失问题+上一章铺垫的【异步复制数据丢失问题】+【集群脑裂】

    1.redis哨兵模式的前言: 一年一度的问题来了,为啥子要用redis的哨兵模式的呢? 简单粗暴的理解下子,顺带开个玩笑,没有理解好,还望不要见笑: 其实redis的哨兵模式,个人理解:只是说法搞大 ...

  9. Redis 高级特性(5)— 集群模式(主从模式、哨兵模式、cluster 集群模式)

    Redis 是如何做到高可用的呢? 它主要通过支持主从模式.哨兵模式.集群模式这三种模式,来满足不同业务特点和可用等级的需求. 其中,主从模式部署最简单,用得也最多,集群模式比较复杂,但可用性最高. ...

最新文章

  1. 好久没更新了,马上回来,精彩继续
  2. php 如何判断是否搜索出结果,搜索PHP - 如何调出搜索框没有结果
  3. Databricks基本操作
  4. 列表的定义、索引、添加、删除、查找、排序
  5. jQuery 实现上下,左右滑动
  6. 【Kalman】卡尔曼滤波Matlab简单实现
  7. 玉米叶片病害识别与分类的优化密集卷积神经网络模型
  8. Valid Palindrome leetcode125
  9. CAXA中添加气动液压元件库方法
  10. 电脑桌面云便签怎么登录便签账号?
  11. c语言与或非,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解
  12. 《逆向工程核心原理》学习笔记(一):代码逆向技术基础
  13. MySQL全文索引的坑 20211202
  14. 语聊房玩法解析,如何快速打造一款语音社交产品
  15. TYPE-C HUB(拓展坞)乐得瑞LDR6023A快充方案介绍
  16. liunx 用户管理(增加、删除、修改密码)
  17. 魔兽对战平台服务器更新维护什么,魔兽官方对战平台更新:公会系统正式上线!...
  18. 各类分布以及检验方法
  19. whith ~ as 用法
  20. c语言知道ascII码求字母,c语言的ascii代码

热门文章

  1. 宝塔修改Nginx服务器类型,宝塔面板nginx更改日志格式的方法
  2. phpmyadmin4.8.1远程文件包含漏洞
  3. k8s kubectl生成kube-config文件
  4. java框架之SpringCloud(2)-Rest微服务案例
  5. Referenced file contains errors (http://JAVA.sun.com/xml/ns/j2ee/web-app_2_5.xsd).
  6. php 二维数组传递给 js 问题解决记录
  7. UWP-HttpClient
  8. jQuery中live函数的替代-【jQuery】
  9. 计算机考试忘记备注班级了,2012年计算机二级Access第二十五套上机试题及答案详解...
  10. 电平转换芯片_「厚积薄发」润石产品面面观之电平转换芯片 RS0104