一次天花板级别的Redis高可用架构设计实践

Qunar Redis 集群是一个分布式的高可用架构,整个架构主要由以下几个重要部分组成:

  •  Redis Server 节点:每个节点有一主一从两个实例,多个节点组成一份完整的集群数据,其中每个节点只有主库对外提供服务,从库仅仅用于节点高可用、数据持久化及定时备份。
  •  Zookeeper 集群:由五个 zk 节点组成,Redis 集群配置变更后,通知客户端进行重连。
  •  Redis Sentinel 集群:由五个 Sentinel 节点组成,用于 Reids Server 节点的高可用,主从切换、故障转移、配置更新等。
  •  配置中心集群:由五个 MySQL 节点组成的 PXC 集群,用于存储 Redis 集群的分片信息,即每个节点的 Master 实例信息及分配 key 的一致性 hash 值范围。
  •  应用程序客户端:监听 zk 变化,在配置中心获取 Redis 实例信息进行连接。
  • 1)当客户端根据 Redis 集群的 namespace 建立连接时,会先从 zk 中查找/config_addr 节点, 该节点下存放的是配置中心集群的实例信息,从中随机选择一个数据库实例进行连接。

    2)在配置中心的特定库表中,根据 Redis 的 namespace 查询集群的节点的连接配置,然后建立 Redis 连接。

    3)客户端建立 Redis 连接后,会启动了两个线程:

    •  一个用于监听 zk 的地址的变化。每个 Redis 集群在 zk 中都会有一个/redis/namespace 的节点 ,如果集群配置发生变化,哨兵会通知 zk 更新此节点的值,客户端感知到 zk 配置变化, 将会去配置中心获取新的连接配置,重新建立连接。
    •  一个用于轮询配置中心的连接配置。为了防止 zk 通知失败,客户端会通过这个线程,每隔 10s 去轮询配置中心的配置信息,如果发现配置中心的配置和本地缓存的不一样,就会使用配置中心的配置建立新的连接。
【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章