栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

(三)分布式缓存——Redis哨兵机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(三)分布式缓存——Redis哨兵机制

分布式缓存——Redis哨兵机制

一、哨兵的作用和原理:

1、哨兵机制的作用:2、哨兵如何监测节点的状态:3、哨兵如何选举新的master:4、哨兵如何实现故障转移:5、总结: 二、RedisTemplate的哨兵模式:

RedisTemplate和Sentinel的整合:

分布式缓存——Redis哨兵机制 一、哨兵的作用和原理: 1、哨兵机制的作用:

Redis提供了哨兵(Sentinel)机制来实现主从集群的master、slave的自动故障恢复。哨兵的结构和作用如下:

作用——监控: Sentinel 会不断检查您的master和slave是否按预期工作。

作用——自动故障恢复: 如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主。

作用——通知: Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端,比如告诉客户端master节点变更了,这样客户端写数据的时候才不会找错节点。

2、哨兵如何监测节点的状态:

Sentinel基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令:
主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。
客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例客观下线。quorum值最好超过Sentinel实例数量的一半。

3、哨兵如何选举新的master:

选举的依据:

    首先会判断slave节点与master节点断开时间长短,如果超过指定值(down-after-milliseconds * 10)则会排除该slave节点;然后判断slave节点的slave-priority值,越小优先级越高,如果是0则永不参与选举;如果slave-prority一样,则判断slave节点的offset值,越大说明数据越新,优先级越高;最后是判断slave节点的运行id大小,越小优先级越高
4、哨兵如何实现故障转移:
    sentinel给备选的slave1节点发送slaveof no one命令,让该节点成为master;sentinel给所有其它slave发送slaveof slave1 ip slave1 端口命令,让这些slave成为新master的从节点,开始从新的master上同步数据(一开始还是进行全量同步);最后,sentinel强行给故障节点标记为slave(修改配置文件),当故障节点恢复后会自动成为新的master的slave节点。
5、总结:

二、RedisTemplate的哨兵模式:

在Sentinel集群监管下的Redis主从集群,其节点会因为自动故障转移而发生变化,Redis的客户端必须感知这种变化,及时更新连接信息。Spring的RedisTemplate底层利用lettuce实现了节点的感知和自动切换。

RedisTemplate和Sentinel的整合:

配置文件不需要配置redis的地址,因为这个地址也是不确定的,只需要配置好Sentinel的地址就可以了;客户端会根据地址找到Sentinel,从而得知redis的地址以及主从情况。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/735975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号