聊聊 Redis 的高可用

核心概念
  • 高可用性(HA):确保系统在高于平均水平的时间内保持约定的运行性能水平,通常指正常运行时间。
  • Redis:内存数据库,数据存储在内存中,避免单点故障是关键。
Redis 高可用手段
  1. Redis 主从复制

    • 功能:多个 Redis 节点组成集群,主节点操作数据,从节点同步并提供查询。
    • 同步类型
      • 全量复制:首次数据同步。
      • 增量复制:网络断连后继续同步。
  2. Redis 哨兵模式

    • 功能:监控 Redis 节点,自动故障转移,配置提供者,通知功能。
    • 实现
      • 监控:检查主从实例状态。
      • 自动故障转移:主实例不可用时,从节点升级为主节点。
      • 配置提供者:客户端通过哨兵获取主节点地址。
      • 通知:故障转移结果通知客户端。
  3. Redis 集群(Cluster)

    • 功能:分布式数据库方案,通过分片管理数据,具备复制、故障转移和流量调度能力。
    • 特点:允许水平扩展,数据划分为16384个哈希槽。
主从复制详解
  • 全量复制流程

    1. 建立主从关系 :通过 replicaof 命令。
    2. 主从库间建立连接、协商同步
      • 从库发送 psync 命令,包含主库的 runIDoffset
    3. 主库将所有数据同步给从库
      • 主库执行 bgsave 生成 RDB 文件,发送给从库。
      • 从库清空当前数据库,加载 RDB 文件。
      • 主库记录写操作到 replication buffer
    4. 主库发送写命令给从库
      • 发送 replication buffer 中的修改操作。
  • 增量复制

    • 网络断连后采用,控制复制成本。
    • 使用 replication bufferreplication_backlog 缓冲区。
哨兵模式详解
  • 监控:哨兵检查主从实例状态。
  • 自动故障转移
    • 主观下线:哨兵未收到有效响应。
    • 客观下线:多个哨兵同意主实例不可用。
    • Leader 选举:选出 leader 进行故障转移。
    • 故障转移
      • 选择新主节点,更新其他节点配置。
      • 将旧主节点变成新主节点的从节点。
Redis 集群详解
  • 集群介绍

    • 数据分片,每个节点管理部分数据。
    • 使用 Gossip 协议交互节点信息。
  • 扩展方式

    • 纵向扩展(scale up):提升单个实例硬件资源。
    • 横向扩展(scale out):增加实例数,分摊数据。
总结
  • 高可用性:数据尽量不丢失,服务尽可能可用。
  • 数据持久化:AOF 和 RDB 保证数据安全。
  • 多节点:提高服务吞吐量和容量。
  • 读写分离:增加 Redis 的读负载能力。
  • 哨兵模式:实现故障自动转移,适用于业务规模扩展。
  • Redis Cluster:解决大数据量存储问题,便于横向扩展。
相关推荐
PGCCC10 分钟前
【PGCCC】Postgresql 存储设计
数据库·postgresql
PcVue China2 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
jerry6094 小时前
7天用Go从零实现分布式缓存GeeCache(改进)(未完待续)
分布式·缓存·golang
锐策4 小时前
〔 MySQL 〕数据库基础
数据库·mysql
远歌已逝5 小时前
管理Oracle实例(二)
数据库·oracle
日月星宿~5 小时前
【MySQL】summary
数据库·mysql
爱吃土豆的程序员5 小时前
在oracle官网下载资源显示400 Bad Request Request Header Or Cookie Too Large 解决办法
java·数据库·oracle·cookie
睿思达DBA_WGX6 小时前
Oracle 11g rac 集群节点的修复过程
数据库·oracle
尘浮生6 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序