Spring Cloud Eureka核心源码分析
2021-08-09 14:36:40 2 举报
Eureka源码分析流程图
作者其他创作
大纲/内容
每隔30s,将readWriteCacheMap同步到readOnlyCacheMap
reg\t\t\t\t.getEurekaClient().registerHealthCheck
DefaultLifeCycleProcessor.doStart()
DiscoveryClient.getAndStoreFullRegistry
DiscoveryClient.fetchRegistry
让指定key的缓存失效
1. 移除失效节点
更新本地缓存
从readWriteCacheMap加载数据
Eureka Server 服务端
调用父类的构造方法
EvictionTask
PeerAwareInstanceRegistryImpl类关系图
Eureka Server用于存储服务注册信息的容器
ApplicationsResource.getContainers
Application.addInstance()
调用http接口: /apps
readOnlyCacheMap
EurekaClientAutoConfiguration
AbstractApplicationContext.finishRefresh
PeerAwareInstanceRegistryImpl.register
heartbeatExecutor心跳定时任务
DiscoveryClient构造方法
SpringApplication.run()
http通信
EurekaAutoServiceRegistration.start()
全量
SmartLifecycle
本地服务地址列表缓存
internalCancel
直接返回服务实例数据
是否存在
增量/全量
是
EurekaClientConfiguration
AbstractInstanceRegistry.invalidateCache
每隔60s,清理超过9s未续约的节点
30s执行一次
AbstractInstanceRegistry.register
DiscoveryClient初始化的时候做的事情
DiscoveryClient
CacheRefreshThread.refreshRegistry
调用http接口: /apps/Delta
EurekaServiceRegistry.register
注册健康检测机制
AbstractInstanceRegistry.postInit
数据同步
TimedSupervisorTask
register()发起服务注册
initScheduledTasks1. 建立心跳检测机制2. 通过内部类来实例化StatusChangeListener 实例状态监控接口3. 定时上报服务状态
装载bean->CloudEurekaClient
2. invalidateCache
EurekaAutoServiceRegistration的初始化
reg.getApplicationInfoManager()\t\t\t\t.setInstanceStatus
静态内部配置类
initScheduledTasks
更改实例状态
ResponseCacheImpl
增量
TimerTask(30s)
Eureka Client 客户端
三级缓存的失效与更新
否
DiscoveryClient.getAndUpdateDelta
添加/更新服务提供者的地址信息
针对实现了SmartLifeCycle接口的Bean,调用start()方法
cacheRefreshExecutor 定时去同步服务端的实例列表
readWriteCacheMap
AtomicReference<Applications>localRegionApps
服务启动流程
从readOnlyCacheMap加载数据
自动装配机制
0 条评论
回复 删除
下一页