1/3
腾讯频道 - Redis技术分享 - #Redis 怎么实现Redis的高可用?
腾讯频道 - Redis技术分享 - #Redis 怎么实现Redis的高可用?
腾讯频道 - Redis技术分享 - #Redis 怎么实现Redis的高可用?
#Redis 怎么实现Redis的高可用?
redis要保证高可用,有2个可选方案。
主从架构
主从模式是最简单的实现高可用的方案,核心就是主从同步。主从同步的原理如下:
1.slave发送sync命令到master
2.master收到sync之后,执行bgsave,生成RDB全量文件
3.master把slave的写命令记录到缓存
4.bgsave执行完毕之后,发送RDB文件到slave,slave执行
5.master发送缓存中的写命令到slave,slave执行

哨兵
基于主从方案的缺点还是很明显的,假设master宕机,那么就不能写入数据,那么slave也就失去了作用,整个架构就不可用了。而哨兵(sentinel)的功能比单纯的主从架构全面的多了,它具备自动故障转移、集群监控、消息通知等功能。
哨兵可以同时监视多个主从服务器,并且在被监视的master下线时,自动将某个slave提升为master,然后由新的master继续接收命令。整个过程如下:
1.初始化sentinel,将普通的redis代码替换成sentinel专用代码
2.初始化masters字典和服务器信息,服务器信息主要保存ip:port,并记录实例的地址和ID
3.创建和master的两个连接,命令连接和订阅连接,并且订阅sentinel:hello频道
4.每隔10秒向master发送info命令,获取master和它下面所有slave的当前信息
5.当发现master有新的slave之后,sentinel和新的slave同样建立两个连接,同时每个10秒发送info命令,更新master信息
6.sentinel每隔1秒向所有服务器发送ping命令,如果某台服务器在配置的响应时间内连续返回无效
回复,将会被标记为下线状态
7.选举出领头sentinel,领头sentinel需要半数以上的sentinel同意
8.领头sentinel从已下线的的master所有slave中挑选一个,将其转换为master
9.让所有的slave改为从新的master复制数据
10.将原来的master设置为新的master的从服务器,当原来master重新回复连接时,就变成了新
master的从服务器


2024-10-31
浏览57
登录后评论
评论
分享