SpringCloud Ribbon原理-4-服务列表的初始化过程

SpringCloud Ribbon原理-4-服务列表的初始化过程

前文中,在获取ILoadBalancer的过程中,我们已经得知,它返回的是ZoneAwareLoadBalancer
SpringCloud Ribbon原理-4-服务列表的初始化过程
那么它是在哪里去初始化的呢? ZoneAwareLoadBalancer 初始化时,必然先要去初始化它的父类DynamicServerListLoadBalancer,它的构造方法会被执行,其中有一个方法是restOfInit();
SpringCloud Ribbon原理-4-服务列表的初始化过程
SpringCloud Ribbon原理-4-服务列表的初始化过程
更新服务列表:
SpringCloud Ribbon原理-4-服务列表的初始化过程
SpringCloud Ribbon原理-4-服务列表的初始化过程
上面这个updateAction 又调用了updateListOfServers();SpringCloud Ribbon原理-4-服务列表的初始化过程
而start,则是启动了一个定时任务,定时任务的内容就是更新服务列表:updateListOfServers:
SpringCloud Ribbon原理-4-服务列表的初始化过程
那么定时任务执行周期是多少呢?在下图中可以看到是默认的30s,也就是每隔30s去更新一次本地缓存中的服务列表
SpringCloud Ribbon原理-4-服务列表的初始化过程
而PollingServerListUpdater 这个类的初始化,是在配置类 RibbonClientConfiguration中自动装配来完成初始化的:
SpringCloud Ribbon原理-4-服务列表的初始化过程