Redis应用之Sentinel

193 阅读2分钟

「这是我参与11月更文挑战的9天,活动详情查看:2021最后一次更文挑战

Sentinel

  • 相信大家在很多中间件或集群中都能听到哨兵这个词
    • 它是保证主从机器的高可用的关键

    • 主要是时刻监控着主从节点是否出现异常

    • 感兴趣的伙伴也可以去看一下相关的一致性算法Paxos、Raft、ZAB

    • Sentinel每秒钟都会向各个实例发送ping命令用来检查是否能正常连接

image.png

使用

  • 使用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`
    - 在项目中使用,主要起到`流量控制、熔断降级、系统负载保护`
    - 来支持我们的高并发业务,所以在学习中可以关联着思考
    - 底层永远不变,而上层变化永远依赖于底层