consul健康检查源码分析二(TTL模式下)

简单梳理源码,欢迎大家讨论,评论,指正。

本次来分析consul健康检查TTL模式下的原理。

基于http+interval的原理请参考下面链接
consul健康检查源码分析一(http+interval模式)

主要也是分为几个部分

1.服务注册启动一个start,这个和上一篇类似,就主要看一下start那块就好。

  • 路径:agent/agent.go


    image.png
  • 路径:agent/checks/check.go 启了一个协程


    image.png
  • 路径:agent/checks/check.go 里面是一个定时任务,到时间的话就把status更新成critical


    image.png

    2.应用会定时上报请求道check/pass接口上,下面分析一下check/pass的逻辑

springcloud基于consul的ttl健康检查的源码分析

  • 路径:agent/http_register.go


    image.png
  • 路径:agent/agent_endpoint.go AgentCheckPass->agentCheckUpdate->updateTTLCheck(agent/agent.go)


    image.png
  • 路径:agent/checks/check.go 里面重置了定时任务的时间,由于重置了定时任务,所以定时需要重新计时,TTL那边起的协程就重新计算,不过到时间。如果长时间不上报了,定时任务到时间就更新生成critical了。


    image.png

你可能感兴趣的:(consul健康检查源码分析二(TTL模式下))