eureka客户端部分源码流程图
2020-07-31 14:29:35 0 举报
eureka客户端部分源码流程图
作者其他创作
大纲/内容
合并到本地缓存
如果从服务器获取的增量是空的,那么他怕不安全就会调用全量获取方法getAndStoreFullRegistry
任务线程
InstanceInfoReplicatororRunnable接口
使用Jersey调用server端了返回的信息存储在Applications
调用服务端获取全量接口http接口
调用
getAndStoreFullRegistry();
定时更新服务注册列表线程
初始化的bean很多,挑着看 猜
eurekaTransport.queryClient.getApplications(remoteRegionsRef.get()
initScheduledTasks
初始化
EurekaClientAutoConfiguration
refreshRegistry获取服务
@AutoConfigureAfter
applications
!reconcileHashCode.equals(delta.getAppsHashCode())
激活
服务端处理参考<eureka服务端Jersey接口>流程图的注册接口
服务端他存有全部实例和增量实例(保存3分钟),然后客户端30秒去服务端那里拉一次,如果刚好服务端的过期了,客户端拉取的是空的,那么客户端就比服务端少实例span style=\"font-size: inherit;\
不为null,还加了lock锁
@bean初始化
CacheRefreshThread
instanceInfoReplicator.start(参数)
marker
调用服务端注册HTTP接口
初始化定时拉取服务注册信息和服务续约任务
discoveryClient.register();
scheduler.schedule
EurekaDiscoveryClientConfiguration
EurekaClientConfigBean(初始化EurekaClient相关配置)
调用服务端接收心跳接口
如果服务端实例hashcode和客户端实例的hashcode不一致,就会全量拉取
spring-cloud-netflix-eureka-client.jar里的spring.fatories文件里的EurekaAutoConfiguration对应EurekaClientAutoConfiguration
HeartbeatThread
服务定时续约的线程
计算所有实例的hashcode
EurekaClient
这个方法里面会一个个的比对(先判断是不是本地的注册表,不是的话就获取注册表给applications实例(我猜的。。))然后再根据从服务端获取到的增量类型(添加、修改、删除)再实例里面做相应的操作
getAndUpdateDelta(applications)
先从服务端获取注册表的增量信息的接口eurekaTransport.queryClient.getDelta(remoteRegionsRef.get())
增量更新
updateDelta(delta)
首次全量更新
run方法的调用
DiscoveryClient.renew()
初始化定时服务注册任务
定时任务方法参数里面有this那么他是调用了run方法
DiscoveryClient(就是springcloud对原生的eureka包装集成的类)
服务注册
run调用
eurekaTransport.registrationClient.register(instanceInfo);
服务续约
getReconcileHashCode(applications)
写入本地缓存
TimedSupervisorTaskrun方法里面有超时处理和cas
fetchRegistry(boolean forceFullRegistryFetch)
run方法调用
0 条评论
下一页