Eureka_1.7.2源码全景图
2021-12-12 15:59:50 0 举报
Eureka_1.7.2源码全景图
作者其他创作
大纲/内容
appinfo.replicate.interval40秒后执行1次
调度线程池
请求类型
acceptorThread
for循环
主动过期缓存
lease.duration更新+90s
节点PeerEurekaNode
hash和服务端注册表一致
enableSelfPreservation
服务取消注册server
无
客户端主动关闭
执行run()
maxThreadsForPeerReplication默认开启20个线程
如果eureka节点A接受到服务注册请求,想要复制给eureka节点B。请求放入三层队列,在批量发送之前,节点A宕机了,此时eureka如何补救?答:服务会持续发送心跳,当发现节点A接收心跳失败,就会发送心跳给节点B,由节点B同步给集群内其他eureka节点。
Eureka集群管理器PeerEurekaNodes
最近变化队列recentlyChangedQueue
InstanceResourcecancelLease()取消注册请求
只读缓存readOnlyCacheMap
有,增量更新
registry.syncUp()从相邻的eureka节点拷贝注册信息
取出所有数据
更新
计算更新后的服务实例信息的hash值
client.refresh.interval30秒执行1次
renewalThresholdUpdateIntervalMs15分钟更新1次
get请求/v2/apps/delta
有无缓存
numberRegistrySyncRetries重试5次
TaskExecutors
一致
地址变更
isReplication
get请求/v2/apps
init初始化
InstanceInfoReplicator服务信息复制组件
否
加载客户端配置EurekaClientConfig
有
acceptorQueue请求队列
注册服务实例
预期每分钟会接收到多少次心跳(有bug)
增加
server启动
全量抓取注册表
是
处理请求
eureka-client.properties配置文件
开始
初始化
结束
本地注册表localRegionApps
Web容器启动监听器ServletContextListener
ApplicationResourceaddInstance()注册请求
定时同步
关闭节点shutdown
DiscoveryClient服务注册表localRegionApps
InstanceResourcerenewLease()服务续约请求
客户端启动
自动过期
读写guava缓存ReadWriteCacheMap
根据最新的注册表服务实例数量
加载服务端配置EurekaServerConfig
取消注册,更新-2
客户端增量拉取注册表
缓存刷新线程池
开启自我保护
post请求/v2/apps/ServiceA
初始化EurekaBootStrap
peerEurekaNodesUpdateIntervalMs10分钟执行1次
新增
初始化Eureka服务端上下文EurekaServerContext
responseCacheAutoExpirationInSeconds过期时间180秒
服务注册server
服务实例注册器PeerAwareInstanceRegistry
自动清理
服务实例状态变更监听器
从eureka-client.properties读取serviceUrl
增量抓取注册表
相邻节点有数据
统计一分钟发送了多少次心跳
eureka-server.properties配置文件
删除
post请求/v2/peerreplication/batch
ApplicationsResourcegetContainerDifferential()接收请求
Eureka Client初始化和销毁
maxElementsInPeerReplicationPool500毫秒一个批次且最大250个请求一个批次打包请求
更新+1
processingOrder请求队列
最后更新时间(有bug,当前时间+90s)
evictionIntervalTimerInMs60秒执行1次
发送请求
同步请求到其他eureka节点
获取增量变更的实例信息
registry.openForTraffic()服务实例是否故障宕机(包含自我保护机制)
故障发现定时任务
写入
注册,更新+2
健康检查
发送心跳HeartbeatThread
最多挑选15%的过期的服务实例数量下线
put请求/v2/apps/ServiceA/1
delete请求/v2/apps/ServiceA/1
是否满足预期心跳数量
batchWorkQueue批量请求队列
responseCacheUpdateIntervalMs30秒同步1次
服务注册到server
增量抓取注册表CacheRefreshThread
一. 服务注册到发现最多多久?1. 服务A的实例a1第一次注册上eureka的时候,服务B的client增量拉取需要花费30秒,能感知到a12. 服务A的实例a1已经注册上eureka,现在再加一个实例a2,server端的只读缓存30秒之后才能过期,服务B的client增量拉取需要花费30秒,共60秒才能感知到a2
有无数据
是否404
分发请求到以上的端点处理
初始化只执行1次post请求/v2/apps/ServiceA
registrySyncRetryWaitMs休眠30秒
不一致发生了意外的问题
加载服务实例配置EurekaInstanceConfig
缓存管理器ResponseCache
false
新增删除
删除缓存
设置值
返回数据
新增节点
启动
开启线程
AcceptorExecutor
30秒执行1次
心跳线程池
deltaRetentionTimerIntervalInMs30秒执行1次删除180秒之前的数据retentionTimeInMSInDeltaQueue
定时任务
EurekaTransport网络传输组件
ApplicationsResourcegetContainers()接收请求
0 条评论
回复 删除
下一页