LiSheng's blog LiSheng's blog
首页
笔记
个人简历
随笔集
GitHub (opens new window)
首页
笔记
个人简历
随笔集
GitHub (opens new window)
  • golang

  • cplus

  • leetcode

  • 存储技术

  • 分布式系统

  • 计算机网络

  • Linux操作系统

  • Redis

    • 大纲
    • redis持久化策略
    • redis事务
    • redis分布式锁
    • redis高可用
      • redis主从同步
      • Redis是什么
      • Redis基本数据结构
      • Redis为什么这么快
      • 缓存击穿、缓存穿透、缓存雪崩
      • 热Key问题,如何解决热key问题
      • Redis 过期策略和内存淘汰策略
      • Redis 的持久化机制
      • Redis的高可用
      • 使用过Redis分布式锁
      • Redis的跳跃表
      • MySQL与Redis 如何保证双写一致性
      • Redis的Hash 冲突怎么办
      • 布隆过滤器
      • Redis 事务机制
    • 其他

    • 笔记
    • Redis
    lisheng
    2024-09-10
    目录

    redis高可用

    Redis 实现高可用性(High Availability)的方式包括主从复制、哨兵模式和集群模式。这些机制确保在单点故障、网络分区或其他不可预见的情况下,Redis 服务仍然能够正常运行。

    # 1. 主从复制(Master-Slave Replication)

    • 概念:在 Redis 主从复制中,一个 Redis 实例作为主节点(Master),负责处理所有的写请求。一个或多个从节点(Slave)负责复制主节点的数据,并可以处理读请求。
    • 工作原理:
      • 主节点将所有写操作同步到从节点,从节点会自动跟随主节点的变化。
      • 从节点也可以作为读副本,分担主节点的读压力。
    • 高可用性特点:
      • 主节点故障时,从节点可以提升为主节点(需要手动或通过哨兵机制实现)。
      • 减少单点故障的风险,但在主节点故障期间,写操作无法进行。

    # 2. 哨兵模式(Sentinel Mode)

    • 概念:Redis 哨兵(Sentinel)是一种监控机制,用于实现 Redis 的自动故障转移(failover)和高可用性。
    • 工作原理:
      • 哨兵监控主节点和从节点的状态,当主节点发生故障时,哨兵会自动将一个从节点提升为主节点,并通知其他从节点和客户端进行相应的更新。
      • 哨兵还可以进行配置提供服务,帮助客户端找到当前的主节点位置。
    • 高可用性特点:
      • 自动故障转移和主从切换,减少人为干预的时间和风险。
      • 提供了监控和通知功能,帮助快速发现和响应故障。

    # 3. 集群模式(Cluster Mode)

    • 概念:Redis 集群是一种分布式的 Redis 解决方案,通过将数据分片存储在多个节点上,实现数据的水平扩展和高可用性。
    • 工作原理:
      • Redis 集群将数据分成 16384 个槽位(hash slots),每个节点负责一部分槽位的数据。
      • 每个主节点(Master)可以有一个或多个从节点(Slave)作为备份。
      • 客户端请求时,通过计算 key 的 hash 值来决定请求路由到哪个节点。
      • 如果某个主节点发生故障,集群中的从节点可以自动提升为主节点,继续提供服务。
    • 高可用性特点:
      • 实现数据的分布式存储和请求的分布式处理,支持大规模数据和高并发场景。
      • 自动处理主节点的故障转移,确保集群的持续可用性。
      • 集群模式提供了一种更为复杂的解决方案,适用于需要高扩展性和高可用性的场景。

    # 4. 持久化机制的支持

    • Redis 支持多种持久化机制,如 RDB(快照)和 AOF(Append Only File)日志。尽管持久化机制本身不是高可用性的直接手段,但它们可以在 Redis 发生故障重启后,帮助数据恢复,减少数据丢失。
    • RDB:定期保存 Redis 数据集的快照,适合数据恢复,但可能会丢失最近的写入数据。
    • AOF:记录每次写操作,重启时可以通过重放 AOF 文件恢复数据,数据丢失风险更低。

    # 5. 自动重启与故障检测

    • 自动重启:在生产环境中,可以配置 Redis 实例在崩溃后自动重启,减少停机时间。
    • 监控和报警:结合 Redis 的 INFO 命令和外部监控工具(如 Prometheus、Grafana),可以实时监控 Redis 的运行状态,设置警报,提前应对潜在的故障。

    # 6. 多数据中心的部署

    • 在关键业务场景中,Redis 可以通过跨数据中心部署来实现更高级别的高可用性。主从复制或集群节点可以跨越不同的物理位置,确保即使一个数据中心失效,另一个数据中心的 Redis 实例仍能继续服务。

    # 7. 客户端一致性哈希

    • 在 Redis 集群模式中,客户端使用一致性哈希来确定请求应该路由到哪个节点。即使集群中的某些节点发生故障或数据重新分片,客户端仍能正确访问数据,确保服务的可用性。

    # 8. 网络分区处理

    • Redis 哨兵和集群模式都考虑了网络分区的情况,并设计了处理机制。在网络分区发生时,哨兵和集群会尝试判断哪个节点是主节点,并根据策略进行故障转移或数据重同步,防止“脑裂”现象。

    通过这些机制和策略,Redis 可以实现高可用性,并确保在复杂的分布式环境中,服务的可靠性和稳定性。

    编辑 (opens new window)
    上次更新: 2024/09/13, 11:59:12
    redis分布式锁
    redis主从同步

    ← redis分布式锁 redis主从同步→

    最近更新
    01
    ceph分布式存储-对象存储(RGW)搭建
    10-27
    02
    ceph分布式存储-集群客户端连接
    10-27
    03
    ceph分布式存储-管理crushmap
    10-27
    更多文章>
    Theme by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式