serverCron(redis.c)--》sentinelHandleDictOfRedisInstances(sentinel.c)
(执行定期操作
 比如 PING 实例、分析主服务器和从服务器的 INFO 命令
 向其他监视相同主服务器的 sentinel 发送问候信息 
 并接收其他 sentinel 发来的问候信息
 执行故障转移操作,等等
 )
——》sentinelHandleRedisInstance(sentinel.c)对给定的实例执行定期操作
--》sentinelSendPeriodicCommands(sentinel.c)根据情况,向实例发送 PING、 INFO 或者 PUBLISH 命令
——》对主服务器进行处理 
1 判断 master 是否进入 ODOWN 状态 sentinelCheckObjectivelyDown(sentinel.c)主观下线
2 如果主服务器进入了 ODOWN 状态,那么开始一次故障转移操作 sentinelStartFailoverIfNeeded 
   设置主服务器的状态,开始一次故障转移sentinelStartFailover
   强制向其他 Sentinel 发送 SENTINEL is-master-down-by-addr 命令 sentinelAskMasterStateToOtherSentinels
   (如果 Sentinel 认为主服务器已下线,那么它会通过向其他 Sentinel 发送 SENTINEL is-master-down-by-addr 命令,尝试获得足够的票数,将主服务器标记为 ODOWN 状态,并开始一次故障转移操作
3 执行故障转移   sentinelFailoverStateMachine
   等待故障转移开始 sentinelFailoverWaitStart
     选举出master在指定epoch上的领头 sentinelGetLeader
   选择新主服务器 sentinelFailoverSelectSlave
   升级被选中的从服务器为新主服务器 sentinelFailoverSendSlaveOfNoOne
   等待升级生效,如果升级超时,那么重新选择新主服务器 sentinelFailoverWaitPromotion
   向从服务器发送 SLAVEOF 命令,让它们同步新主服务器 sentinelFailoverReconfNextSlave

事件处理器

读事件处理器 redisAeReadEvent redisAsyncHandleRead redisBufferRead  redisProcessCallbacks
写事件处理器 redisAeWriteEvent redisBufferWrite


sentinelSendPing sentinelPingReplyCallback

results matching ""

    No results matching ""