SpringCloud Consul server 选取 与 serverList 更新机制

Posted 快鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud Consul server 选取 与 serverList 更新机制相关的知识,希望对你有一定的参考价值。

(SpringCloud Consul  2.2.3)
ribbon-loadbalancer-2.3.0.jar

1. feign 调用时,server 选取的流程:(借助 ribbon 实现的)
可以加一个 feign.RequestInterceptor ,然后在 inteceptor 上打断点,找到下面的调用关系

1 1. feign接口
2  1.1 org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient#execute()
3     1.1.1 com.netflix.client.AbstractLoadBalancerAwareClient#executeWithLoadBalancer()
4         1.1.1.1 com.netflix.loadbalancer.reactive.LoadBalancerCommand#selectServer()
5             1.1.1.1.1 com.netflix.loadbalancer.ZoneAwareLoadBalancer#chooseServer()  // 它自己维护了一个 serverList 列表,每 30s 更新一次

 

// 从 ILoadBalancer#getServerList() 中选取一个 server
com.netflix.loadbalancer.ZoneAwareLoadBalancer#chooseServer()

// 获取可用的服务 ILoadBalancer#getServerList
com.netflix.loadbalancer.BaseLoadBalancer#getServerList()

 

 

2. SpringCloud Consul : serverList 更新机制 

com.netflix.loadbalancer.PollingServerListUpdater#start()  // 定时任务,30s 更新一次最新的服务列表信息
    --> org.springframework.cloud.consul.discovery.ConsulServerList#getUpdatedListOfServers() // 断点打在这里,会发现隔段时间就会被调用

 

参考:
https://www.iflym.com/index.php/code/202003190001.html

 

以上是关于SpringCloud Consul server 选取 与 serverList 更新机制的主要内容,如果未能解决你的问题,请参考以下文章

springcloud-consul

Springcloud整合Consul

SpringCloud学习成长之十四 服务注册(consul)

springcloud-Consul服务注册与发现

SpringCloud服务注册之Consul的简介和原理

微服务SpringCloud之注册中心Consul