Spring Cloud Eureka
2020-06-29 10:34:00 0 举报
Spring Cloud Eureka 源码解析
作者其他创作
大纲/内容
ApplicationResource.addInstance()服务注册处理
evictionTimer.schedule()启动 evictionTimer 定时器,清理注册中心信息
spring-cloud-starter-netflix-eureka-client-xxx.jar
getApplicationsInternal(\"apps/\
调用
replicateToPeers()向集群中的其他节点发送数据,指令是 Action.Heartbeat,注意会排除自己
② fetchRegistry()获取注册信息
定时任务
instanceInfoReplicator.stop()heartbeatExecutor.shutdownNow()cacheRefreshExecutor.shutdownNow()scheduler.shutdownNow()
spring-cloud-netflix-eureka-server-xxx.jar
④ super.renew()调用父类的方法完成续约,更新状态和最后修改时间
④ isLeaseExpirationEnabled()判断是否触发自我保护机制
spring-cloud-starter-netflix-eureka-server-xxx.jar
return
EurekaServerAutoConfiguration
getApplicationsInternal(\"apps/delta\
HeartbeatThread定时发送心跳消息线程
② cancelScheduledTasks()取消定时任务
⑦ cancel()调用发送下线方法
InstanceResource.cancelLease()服务下线处理
注意这里会根据阈值因子随机清除,而不是清除所有失效的
③ evict(compensationTimeMs)清除操作
N
openForTraffic()调用父类方法
EurekaClientAutoConfiguration
replicateToPeers()向集群中的其他节点发送数据,指令是 Action.Register,注意会排除自己
EurekaServerConfigBean配置类,关联 eureka.server 前缀
unregister()利用 jersey 客户端发送下线请求
① CloudEurekaClient#<init>指定 destroyMethod = \"shutdown\"
③ register()调用注册方法
EurekaClientConfigBean配置类,关联 eureka.client 前缀
spring.factories 文件spring 的 SPI 扩展文件
① super.register()调用父类的方法完成注册,注册中心实际上就是一个 ConcurrentHashMap
① postInit()调用父类方法
② replicateInstanceActionsToPeers()根据不同的指令,执行不同的操作
getAndStoreFullRegistry()全量存储
② getCompensationTimeMs()计算补偿时间
EurekaServerInitializerConfiguration#start()由 Spring 回调
initEurekaServerContext()初始化 eureka 环境上下文
④ initScheduledTasks()初始化定时任务,包含 3 个任务
internalCancel()清理工作,即之前分析的 cancel() 服务下线操作
③ register()向注册中心注册服务
DiscoveryClientEureka 的核心组件,在初始化过程中中完成服务注册
EurekaServerAutoConfiguration
renew()调用 renew 方法进行续约,如果是集群节点的相互复制,也会进入此方法
contextInitialized()初始化操作
getAndUpdateDelta(applications)增量更新数据
CacheRefreshThread定时刷新注册表信息线程
register(instanceInfo)利用 jersey 完成注册请求
① CloudEurekaClient#<init>在构造方法里初始化
cancel()调用 cancel 方法进行下线,如果是集群节点的相互复制,也会进入此方法
⑤ heartbeat()调用发送心跳方法
replicateToPeers()向集群中的其他节点发送数据,指令是 Action.Cancel,注意会排除自己
⑥ super.renew()调用父类的方法完成下线,从 map 中移除对象,处理时效时间
EurekaClientAutoConfiguration
InstanceResource.renewLease()服务续约处理
renew发送心跳消息
refreshLeaseInfoIfRequired更新续约信息
refreshDataCenterInfoIfRequired更新注册中心地址信息
EurekaServerInitializerConfiguration创建定时清理器
Y
renewsLastMin.start()启动 renewsLastMin 定时器,即更新 Renews(last min)
spring-cloud-netflix-eureka-client-xxx.jar
InstanceInfoReplicator启动实例信息复制器线程
register()调用 register 方法进行注册,如果是集群节点的相互复制,也会进入此方法
0 条评论
下一页