Redis源码分析--Sentinel(5)故障转移状态机md
2022/2/6 19:12:53
本文主要是介绍Redis源码分析--Sentinel(5)故障转移状态机md,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
故障转移状态机:
一、状态机函数sentinelFailoverStateMachine:
终于进入故障转移,先看一下状态机函数:
void sentinelFailoverStateMachine(sentinelRedisInstance *ri) { redisAssert(ri->flags & SRI_MASTER); /* 如果机器不在故障转移状态,直接退出 */ if (!(ri->flags & SRI_FAILOVER_IN_PROGRESS)) return; switch(ri->failover_state) { case SENTINEL_FAILOVER_STATE_WAIT_START: /* 判断本sentinel是否为leader */ sentinelFailoverWaitStart(ri); break; case SENTINEL_FAILOVER_STATE_SELECT_SLAVE: /* 选择从服务器作为新的主服务器 */ sentinelFailoverSelectSlave(ri); break; case SENTINEL_FAILOVER_STATE_SEND_SLAVEOF_NOONE: /* 向被选中的从服务器发送SLAVEOF no one */ sentinelFailoverSendSlaveOfNoOne(ri); break; case SENTINEL_FAILOVER_STATE_WAIT_PROMOTION: /* 观察被选中的从服务器是否被升级为主服务器 */ sentinelFailoverWaitPromotion(ri); break; case SENTINEL_FAILOVER_STATE_RECONF_SLAVES: /* 让原来的slave跟随新的master * ri是当前master,新的master是ri->promoted_slave */ sentinelFailoverReconfNextSlave(ri); break; } }
- L22:这里只处理超时,真正判断slave升级为master在第二篇INFO命令的回调中进行;
这篇关于Redis源码分析--Sentinel(5)故障转移状态机md的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27阿里云Redis学习入门指南
- 2024-12-27阿里云Redis入门详解:轻松搭建与管理
- 2024-12-27阿里云Redis学习:新手入门指南
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程