Eureka 服务端全量增量数据、注册流程、服务剔除流程
2020-07-03 11:48:41 0 举报
登录查看完整内容
Eureka服务端全量和增量数据接口流程,注册流程,服务剔除流程
作者其他创作
大纲/内容
服务注册流程
存入readOnlyCacheMap中获取
同步各个Eureka Server伙伴节点
经过一系列判断后,执行注册
构造函数初始化
真正调用的注册方法
AbstractInstanceRegistry中启动EvictionTask任务,定时执行实例剔除
获取全量、增量注册信息接口
执行AbstractInstanceRegistry#evict(long)
1. useReadOnlyCache 确定是否使用只读缓存,若不使用缓存,可通过eureka.server设置2. ResponseCacheImpl中保存了两个值,用来保存实例注册信息,一个readOnlyCacheMap,只包含缓存数据,一个是readWriteCacheMap,包含了最新的注册信息。若想让客户端获取实时注册实例信息时,可不使用缓存,直接从readWriteCacheMap中获取3. 服务端设置shouldUseReadOnlyResponseCache 确定是否使用useReadOnlyResponseCache,若使用,则会启动定时任务同步数据
通过Knuth shuffle algorithm 公平洗牌算法,随机清除过期实例
180秒过期后,实例如何处理
执行EvictionTask任务
com.netflix.eureka.registry.AbstractInstanceRegistry#register
ResponseCacheImpl#getGZIP
否
值为空
遍历registry,判断是否有过期的实例
ResponseCacheImpl
初始化readWriteCacheMap此实例使用了guava中的缓存,可设置过期时间默认180秒过期,可通过responseCacheAutoExpirationInSecond设置
useReadOnlyCach
从readWriteCacheMap中获取
设置readWriteCacheMap相关信息无效
判断过期的依据为最后更新时间+duration 时间,默认duration 为90秒;所以在最好一次更新90内不会过期
定时任务对比readOnleyCacheMap中的值,与readWriteCacheMap中的值,若不同,则用readWriteCacheMap中的值替换
为空
服务剔除流程
获取readOnlyCacheMap中的值
ApplicationsResource#getContainers
com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl#register
清除实例时,清除readWriteCache中相关信息
shouldUseReadOnlyResponseCache
直接读取readWriteCacheMap
返回数据
执行Jersey的Path路径
是
更新或清除
注册时,清除readWriteCache中相关信息
ApplicationResource#addInstance
不为空
0 条评论
回复 删除
下一页