簡單梳理源碼,歡迎大家討論,評論,指正。
本次來分析consul健康檢查TTL模式下的原理。
基于http+interval的原理請參考下面鏈接
consul健康檢查源碼分析一(http+interval模式)
主要也是分為幾個部分
1.服務注冊啟動一個start,這個和上一篇類似,就主要看一下start那塊就好。
-
路徑:agent/agent.go
image.png -
路徑:agent/checks/check.go 啟了一個協(xié)程
image.png -
路徑:agent/checks/check.go 里面是一個定時任務,到時間的話就把status更新成critical
image.png
2.應用會定時上報請求道check/pass接口上,下面分析一下check/pass的邏輯
-
路徑:agent/http_register.go
image.png -
路徑:agent/agent_endpoint.go AgentCheckPass->agentCheckUpdate->updateTTLCheck(agent/agent.go)
image.png -
路徑:agent/checks/check.go 里面重置了定時任務的時間,由于重置了定時任務,所以定時需要重新計時,TTL那邊起的協(xié)程就重新計算,不過到時間。如果長時間不上報了,定時任務到時間就更新生成critical了。
image.png





