美文网首页
38. 缓存高可用——缓存如何保证高可用

38. 缓存高可用——缓存如何保证高可用

作者: 木叶苍蓝 | 来源:发表于2023-07-24 14:18 被阅读0次

    以 Redis 为例,分析一下单点缓存如何扩展到集群,以及集群部署的几种常见模式

    缓存集群的高可用

    Redis 的主从复制
    主从复制——各个副本之间的快速数据同步
    任何节点都可以成为主节点,通过 Slaveof 命令可以开启复制
    主从复制可以作为数据备份
    从节点可以扩展主节点的读请求支持能力,实现读写分离

    MySQL的选主——故障转移机制
    同步方式包括半同步,全同步,关于 GTID 的复制等方式
    MySQL 缺少一个选择决策的节点,一般是人工干预选主流程

    当主节点发送故障宕机,需要运维工程师手动从从节点服务器列表中,选择一个晋升为主节点,并且需要更新上游客户端的配置。

    如何实现自动故障转移——自动实现 Failover

    Redis Sentinel —— Redis 哨兵

    Redis-Sentinel 是一个独立运行的进程,假如主节点宕机
    主要实现的功能:

    • 不定期监控 Redis 服务运行状态
    • 发现 Redis 节点宕机,可以通知上游的客户端进行调整
    • 当 Master 节点不可用时,可以选择一个 Slave 节点,作为新的 Master 机器,并且更新集群中的数据同步关系。

    使用 Sentinel 来管理 Redis 集群高可用,假如 Sentinel 宕机,那么整个系统还可以按照预期的方式运行吗?
    答案是否定的,所以 Sentinel 也存在单点问题

    Redis Sentine 方案是一个包含了多个 Sentienl 节点,以及 多个数据节点的分布式结构。
    Sentinel 节点之间会互相监控

    • 当发现某个 Redis 数据节点不可达时, Sentinel 会对这个节点做下线处理
    • 如果是 Master 节点,会通过投票选择是否下线 Master 节点,完成故障发现和 故障转移

    Redis Cluster 集群

    Redis Cluster 是官方的集群方案,是一种无中心的架构,可以整体对外提供服务


    20230720134923.jpg

    在 Redis Cluster 集群中,所有的 Redis 节点都可以对外提供服务
    包括路由分片,负载信息,节点状态维护等功能
    Redis 各个实例间通过 Gossip 通信,好处是 架构清晰,依赖组件少,方便横向扩展
    Redis Cluster 是客户端直接连接服务器,可以最大限度的保证读写性能

    Redis Cluster 划分了 16384 个槽位,每个节点负责其中的一部分数据,都会存储槽位的信息,访问某个具体的数据 Key,可以根据本地的槽位来确定需要连接的节点。

    20230720140704.jpg

    总结

    • Redis 集群高可用的几种配置方式,包括主从复制,Redis 的哨兵机制
    • 简单介绍了 Redis Cluster 和 Codis 的集群方式

    相关文章

      网友评论

          本文标题:38. 缓存高可用——缓存如何保证高可用

          本文链接:https://www.haomeiwen.com/subject/sannudtx.html