Marvel-Site Marvel-Site
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)

Marvel

吾必当乘此羽葆盖车
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)
  • Java

  • 计算机基础

  • 框架|中间件

    • Spring

    • MyBatis

    • MySQL

    • Redis

      • Redis简介
      • Redis常用命令
      • Redis底层数据结构
      • Redis数据结构
      • Redis多线程单线程问题
      • Redis过期删除策略和缓存淘汰机制
      • Redis持久化
      • Redis分布式锁
      • Redis事务
      • Redis缓存穿透、缓存击穿、缓存雪崩
      • Redis集群 - 哨兵模式
        • 主从复制
        • 哨兵介绍
        • 哨兵模式
      • Redis集群 - Redis集群
    • 消息队列

    • Zookeeper

    • Git

    • Maven

    • Gradle

  • 架构

  • 后端
  • 框架|中间件
  • Redis
Marvel
2022-07-16
目录

Redis集群 - 哨兵模式

# Redis集群 — 哨兵模式

# 主从复制

主机数据更新后根据配置和策略,自动同步到备机的master / slave机制,Master 已写为主,slave 以读为主。

image-20220314160126241

工作原理:一主多仆、级联结构

# 哨兵介绍

sentinel,中文名是哨兵。哨兵是 Redis 集群架构中非常重要的一个组件,主要有以下功能:

  • 集群监控:负责监控master 和 slave 进程是否正常工作。
  • 消息通知:如果某个 Redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。
  • 故障转移:如果 master node 挂掉了,会自动转移到 slave node 上。
  • 配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址。

哨兵用于实现 Redis 集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。

  • 故障转移时,判断一个 master node 是否宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举的问题。
  • 即使部分哨兵节点挂掉了,哨兵集群还是能正常工作的。

# 哨兵模式

在 redis3.0 以前的版本要实现集群一般是借助哨兵 sentinel 工具来监控 master 节点的状态,如果 master 节点异常,则会做主从切换,将某一台 slave 作为 master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现 一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率

image-20220807161932636

当哨兵检测到 master 宕机,会自动将 slave 切换称 master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让他们切换主机。

主观下线:单个哨兵实例对服务器做出的下线判断。(有可能是网络不同的问题)

客观下线:多个哨兵实例对同一个服务器做出下线的判断。

当哨兵监视该服务器主观下线后,会询问其他监视该服务的哨兵,看他们是否也认为该服务主观下线,接收到足够数量的哨兵判断为主观下线后,就可以认为该服务器客观下线。

根据优先级、偏移量、runid 选择新的主服务器。

  • 优先级在 redis.conf 中,默认为 slave-priority 100,值越小优先级越高。
  • 偏移量 offset 可以判断哪个 slave 复制越多的数据,值越大优先级越高
  • 每个redis实例启动后都会随机生成一个40位的 runid,值越小优先级越高
编辑 (opens new window)
#Redis
上次更新: 2023/08/20, 21:21:52
Redis缓存穿透、缓存击穿、缓存雪崩
Redis集群 - Redis集群

← Redis缓存穿透、缓存击穿、缓存雪崩 Redis集群 - Redis集群→

最近更新
01
位运算
05-21
02
二叉树
05-12
03
Spring三级缓存解决循环依赖
03-25
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Marvel
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式