简单梳理源码,欢迎大家讨论,评论,指正。
本次来分析consul健康检查TTL模式下的原理。
基于http+interval的原理请参考下面链接
consul健康检查源码分析一(http+interval模式)
主要也是分为几个部分
1.服务注册启动一个start,这个和上一篇类似,就主要看一下start那块就好。
-
路径:agent/agent.go
-
路径:agent/checks/check.go 启了一个协程
-
路径:agent/checks/check.go 里面是一个定时任务,到时间的话就把status更新成critical
2.应用会定时上报请求道check/pass接口上,下面分析一下check/pass的逻辑
-
路径:agent/http_register.go
-
路径:agent/agent_endpoint.go AgentCheckPass->agentCheckUpdate->updateTTLCheck(agent/agent.go)
-
路径:agent/checks/check.go 里面重置了定时任务的时间,由于重置了定时任务,所以定时需要重新计时,TTL那边起的协程就重新计算,不过到时间。如果长时间不上报了,定时任务到时间就更新生成critical了。