《Redis设计与实现》第十六章总结一:Sentinel状态封装

16 Sentinel(哨兵)

作用:
是Redis高可用解决方案。由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器并进行代替,处理命令请求;若下线服务器重新上线,则成为新的主服务器的从服务器

完整的上下线例子:从上到下、从左到右
在这里插入图片描述

16.1 启动并初始化Sentinel

启动一个Sentinel命令:
redis-sentinel /path/to/your/sentinel.conf 或 redis-server /path/to/your/sentinel.conf --sentinel

启动时执行的步骤:

1.初始化Sentinel服务器

2.将普通的Redis服务器使用的代码替换成Sentinel专用代码

3.初始化Sentinel状态

4.根据给定的配置文件,初始化Sentinel的监视主服务器列表

5.创建Sentinel服务器连向主服务器的网络连接

接下来逐一介绍

16.1.1 初始化Sentinel服务器

Sentinel本质:运行在特殊模式下的Redis服务器

步骤类似初始化一个普通的Redis服务器,区别如下:如不会载入RDB或AOF文件,因为不使用数据库
在这里插入图片描述

16.1.2 将普通的Redis服务器使用的代码替换成Sentinel专用代码

将一部分普通Redis服务器使用的代码替换成Sentinel专用代码

例子:
在这里插入图片描述
sentinelcmds命令表解释了为什么在sentinel模式下,Redis服务器不能执行诸如SER命令,因为服务器没有在命令表中载入这些命令

16.1.3 初始化Sentinel状态

初始化sentinel.c/sentinelState结构,其保存了服务器中所有和Sentinel功能有关的状态:
在这里插入图片描述

16.1.4 根据给定的配置文件,初始化Sentinel的监视主服务器列表masters属性

sentinelState中的masters属性记录了所有被Sentinel监视的主服务器的相关信息,其初始化是根据被载入的Sentinel配置文件来进行的,其键值对含义为:
在这里插入图片描述
sentinelRedisInstance结构代表被Sentinel监视的Redis服务器实例,可以是主服务器、从服务器或另外一个Sentinel:
在这里插入图片描述
sentinelRedisInstance.addr属性:指向sentinel.c/sentinelAddr结构的指针,sentinelAddr保存着实例的IP和端口号

  • 例子

配置文件如图:
在这里插入图片描述
则结构为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

16.1.5 创建Sentinel连向被监视的主服务器的网络连接

Sentinel成为主服务器的客户端,可以向主服务器发送命令,并从命令回复中获取相关的信息

对于每个被Sentinel监视的主服务器,Sentinel会创建两个异步网络:
在这里插入图片描述
为什么要两个:为了不丢失消息和保证功能完整性
在这里插入图片描述
例子:
在这里插入图片描述
接下来介绍如何通过命令连接和订阅连接来与被监视的主服务器进行通信的

16.2 获取主服务器信息

启动并初始化Sentinel结束后,Sentinel默认以每十秒一次的频率,通过命令连接向被监视的主服务器发送INFO命令,并通过分析INFO命令的回复来获取主服务器的当前信息:
在这里插入图片描述
根据这些信息更新Sentinel服务器的结构状态:
在这里插入图片描述
例子:根据指定配置进行更新
在这里插入图片描述

16.3 获取从服务器信息

Sentinel会为新的从服务器创建相应的实例结构和创建命令连接、订阅连接

Sentinel默认以每十秒一次的频率,通过命令连接向被监视的从服务器发送INFO命令,并通过分析INFO命令的回复来获取从服务器的当前信息:
在这里插入图片描述
根据这些信息,对Sentinel的从服务器实例结构进行更新

例子:
配置文件为:
在这里插入图片描述
则结构为:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值