Eureka服务端Jersey接口
2020-07-31 14:29:40 0 举报
Eureka服务端Jersey接口
作者其他创作
大纲/内容
注册接口ApplicationResource.addInstance
首先从只读缓存里获取
timer.schedule默认每隔30秒执行一次cacheUpdateTask任务定时将读写缓存里的数据更新到只读缓存里面
回写只读缓存
invalidate
只读缓存没有就从读写缓存里获取
获取缓存值
responseCache.get(cacheKey)
清理缓存invalidateCache
点击进去,根据父类一步步进入到最里面
eureka-core-1.9.3.jarresources包里面获取注册信息接口ApplicationsResource.getContainers
将新的实例信息写入注册表的map里面
从从缓存里面获取
主动失效读写缓存里的数据
注册表就是一个多级的map最外层是一个key,然后value里面又是一个map里面的map key就是服务实例的名称,value就是lease信息
readWriteCacheMap.get(key)读写缓存默认180秒失效会自动过期
在拉取注册表的时候:首先从ReadOnlyCacheMap里查缓存的注册表。若没有,就找ReadWriteCacheMap里缓存的注册表。如果还没有,就从内存中获取实际的注册表数据。在注册表发生变更的时候:会在内存中更新变更的注册表数据,同时过期掉ReadWriteCacheMap。此过程不会影响ReadOnlyCacheMap提供人家查询注册表。默认每30秒Eureka Server会将ReadWriteCacheMap更新到ReadOnlyCacheMap里默认每180秒Eureka Server会将ReadWriteCacheMap里是数据失效下次有服务拉取注册表,又会从内存中获取最新的数据了,同时填充 各级缓存。多级缓存机制的优点:尽可能保证了内存注册表数据不会出现频繁的读写冲突问题。并且进一步保证对Eureka Server的大量请求,都是快速从纯内存走,性能极高(可以稍微估计下对于一线互联网公司,内部上千个eureka client实例,每分钟对eureka上千次的访问,一天就是上千万次的访问)
readOnlyCacheMap.get(key)
0 条评论
回复 删除
下一页