Spring Cloud Eureka原理图解
2021-12-15 13:38:09 0 举报
Spring Cloud Eureka原理图解, 主要涉及到Eureka核心流程的原理,基于图形简单直接的理解Eureka
作者其他创作
大纲/内容
服务下线
数据存储结构
开启自我保护
HeartBeatThread
KEY
evict
Eureka心跳续约机制的整体原理
对应源码执行流程
进行服务注册
TaskDispatcher.process
API 接口
Eureka-Server
InstanceInfo
更新服务端最后一次收到该客户端心跳的时间
Eureka Server
每隔60s检查所有实例的过期时间
只读缓存
instanceID
是
同步到目标服务器
服务注册
Eureka 数据副本同步源码流程图
VALUE
服务下线请求
register
关注公众号,回复'面试资料' 免费获取金三银四冲刺面试题
register()
检查过期的实例
每隔30s发送一次心跳请求
服务上下线也会更新自我保护阈值
AcceptorExecutor
getregistry
数据每隔30s同步一次
每隔15min更新一次自我保护阈值
Eureka心跳续约机制原理
cancel
服务提供者
DiscoveryClient构造方法
获取批量任务List<ReplicationTask>
应用信息JSON串
更新最后一次心跳时间
isExpired()
serviceUpTimestamp
服务地址查询请求
BatchWorkerRunnable
遍历Eureka Server所有节点,逐一进行同步
Service
payload压缩数组
远程调用
renew
spring.application.name
EurekaServer中用来保存服务注册信息的存储结构
服务注册请求
registry
JSRAPI
数据副本同步
replicateToPeer()
gzipped
从batchWorkQueue获取任务
服务提供者(北京)
服务总数 * 每分钟续约数(60S/客户端续约间隔) * 自我保护续约百分比阀值因子
北京机房
PeerAwareInstanceRegistryImpl
batchWorkQueue
TimedSupervisorTask
把队列中的任务添加到pendingTask中
drainAcceptorQueue()
lastUpdateTimestamp
Lease<InstanceInfo>
原理对应的源码执行流程
使用该值判断
把任务转移到batchWorkQueue对阻塞队列中
PeerEurekaNode.register
renew()
如果上一次心跳时间距离当前时间大于90s,则认为过期了
assignBatchWork()
PeerAwareInstanceRegistryImpl.renew()
Eureka-Client
registrationTimestamp
检查实例的过期时间
get registry
Lease
Eureka Client
数据变更同步
initScheduledTasks()
开启定时任务
每隔60s执行一次
判断
InstanceResource.renewLease()
读写缓存
ReplicationTaskProcessor.process()
AcceptorExecutor.process
getWork()
acceptorQueue
添加到阻塞队列
Eureka Server集群跨地区跨机房部署
InstanceRegistry.renew
region:北京
服务提供者(天津)
zone-2
zone-1
ApplicationResource.addInstance
replicateInstanceActionsToPeers()
Eureka 集群副本同步原理
AbstractInstanceRegistry.renew()
evict()
TaskExecutor
payload
AbstractInstanceRegistry
eureka-client
否
是否开启自我保护
数据同步
numberOfRenewsPerMinThreshold
JerseyReplicationClient.submitBatchUpdates()
EvictionTask
服务提供者(青岛)
青岛机房
天津机房
AcceptorRunner
pendingTasks(Map)
com.netflix.eureka.registry.KEY
0 条评论
回复 删除
下一页