redis的高可用结构
主从复制是高可用的基础,当大量的负载出现导致redis中的某一个 数据分片宕机,缓存数据大量丢失,极易导致缓存的雪崩,为了满足 redis的高可用结构,redis支持一主多从,多级主从的结构,当主动 的结构越复杂时,执行的逻辑越多,容易导致主从结构不稳定,根据 企业经验,一节主从最好不要超过6个从节点。
哨兵进程
主从复制从节点只会同步主节点的数据,当主节点发生故障宕机之后, 从节点并不会顶替主节点完成故障转移,所以为了满足Redis的高可用 结构,还需要引入哨兵进程。 哨兵(setinel)是一个特殊的redis进程,他负责对redis的主从结构 进行监听和管理,当主节点(master)发生故障宕机之后,哨兵进程 负责完成故障转移以及主从的替换。
哨兵运行原理
在redis.conf的配置文件中可以配置哨兵进程监听的主节点的ip port 程序一旦启动,哨兵进程会进入主节点执行info命令,获取主节点和对 应从节点的信息,会将主从信息管理到内存中,并持久化到配置的持久 化文件中。主从结构中的所有节点都会被哨兵进程管理监听,哨兵进程 每秒会向主节点发送一次rpc(远程过程调用),如果判断主节点发生故障 宕机会举行过半选举机制,完成主从结构的故障转移。哨兵进程满足只要 主从结构中所有的节点不全部宕机,就能对外提供缓存服务。