「这是我参与11月更文挑战的9天,活动详情查看:2021最后一次更文挑战」
Sentinel
- 相信大家在很多中间件或集群中都能听到哨兵这个词
-
它是保证主从机器的高可用的关键
-
主要是时刻监控着主从节点是否出现异常
-
感兴趣的伙伴也可以去看一下相关的一致性算法
Paxos、Raft、ZAB -
Sentinel每秒钟都会向各个实例发送ping命令用来检查是否能正常连接
-
使用
-
使用
redis-Sentinel可执行文件(或者如果有一个与redis-server可执行文件同名的符号链接) ,- 可以用下面的命令行运行
Sentinel redis-sentinel /path/to/sentinel.conf- 或者可以直接使用
redis-server可执行文件在Sentinel模式下启动它 redis-server /path/to/sentinel.conf --sentinel
- 可以用下面的命令行运行
-
上面这两种方式是都可以实现的
- 在运行
Sentinel的时候必须使用配置文件,因为系统将使用该文件保存当前状态, - 为了在重新启动时重新加载。如果没有给出配置文件,或者配置文件路径不可写,
- 那么
Sentinel将拒绝启动。
- 在运行
选举过程
- 总结来说就是当主节点挂掉以后,就会立即选从节点来顶替
-
如果主主节点挂掉或出现不健康的情况,
-
客户端去连接集群的时候,都会去查询
sentinel -
sentinel就将最新的主节点地址告知客户端
-
缺点
- 在
Redis中,Sentinel也会出现消息丢失的可能- 因为采用的异步复制,所以在时间差的范围下,当主实例挂掉
- 从实例会可能出现没有权完全收到同步的消息
- 所以出现的丢失的消息体量,还是和异步复制出现的延迟有正相关的
罗列其他的sentinel
- 当我们在使用`springcloud`的时候也有`sentinel`
- 在项目中使用,主要起到`流量控制、熔断降级、系统负载保护`
- 来支持我们的高并发业务,所以在学习中可以关联着思考
- 底层永远不变,而上层变化永远依赖于底层