聊聊 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:解决大数据量存储问题,便于横向扩展。
相关推荐
Dontla6 分钟前
Docker Compose healthcheck介绍(监控容器中服务的实际健康状态)数据库健康检查pg_isready
数据库·docker·容器
semantist@语校21 分钟前
第十九篇|东京世界日本语学校的结构数据建模:制度函数、能力矩阵与升学图谱
数据库·人工智能·线性代数·矩阵·prompt·github·数据集
数巨小码人23 分钟前
Oracle SQL调优技巧实战指南
数据库·sql·oracle
noravinsc24 分钟前
在银河麒麟v10上安装达梦8数据库
服务器·数据库·oracle
没有bug.的程序员1 小时前
Redis 内存优化与压缩:从原理到实战的完整指南
java·数据库·redis·内存优化·压缩内存
肃清11 小时前
《Redis核心机制解析》
数据库·redis·缓存
TG_yunshuguoji1 小时前
阿里云国际代理:如何利用RDS构建高可用、可扩展的数据库架构
服务器·数据库·阿里云·云计算·数据库架构
大可门耳1 小时前
Qt的数据库模块介绍,Qt访问SQLite详细示例
数据库·qt·sqlite
七夜zippoe2 小时前
缓存三大劫攻防战:穿透、击穿、雪崩的Java实战防御体系(三)
java·开发语言·缓存
无名客02 小时前
SQL语句执行时间太慢,有什么优化措施?以及衍生的相关问题
java·数据库·sql·sql语句优化