首先看自动配置类
可以看到默认负载:ZoneAwareLoadBalancer
其中最重要方法为chooseServer(),选择一个服务,注意其中LoadBalancerStats
LoadBalancerStats维护了一个Map,保存了所有得可用服务,更新方法为updateZoneServerMapping()
这个Map得更新方法在DynamicServerListLoadBalancer里调用;此类有一个属性updateAction,具体实现类只有一个:PollingServerListUpdater
主要看start方法
可以看到通过定时任务去更新可用服务列表,默认30s更新一次;
想要及时更新可用服务列表,自己实现一个ServerListUpdater更新器,并加入spring容器即可;