eureka的多级缓存机制
2019-12-16 10:39:57 0 举报
eureka的多级缓存机制原理解析
作者其他创作
大纲/内容
4、新服务上来注册,更新注册表信息;同时清空readWriteCacheMap缓存
readOnlyCacheMap
直接从内存注册表中获取
订单服务
1、服务注册
Eureka Server为了避免同时读写内存数据结构造成的并发冲突问题, 还采用了多级缓存机制来进一步提升服务请求的响应速度
库存服务
在注册表发生变更的时候: 会在内存中更新变更的注册表数据,同时过期掉ReadWriteCacheMap。 此过程不会影响ReadOnlyCacheMap提供人家查询注册表。 一段时间内(默认30秒),各服务拉取注册表会直接读ReadOnlyCacheMap 30秒过后,Eureka Server的后台线程发现ReadWriteCacheMap已经清空了,也 会清空ReadOnlyCacheMap中的缓存 下次有服务拉取注册表,又会从内存中获取最新的数据了,同时填充各个 缓存。
3、服务注册
线程
eureka Serve
服务拉取默认30秒,可优化成3秒
发送心跳
5、此时还在30秒内,拉取注册表 ,走的还是readOnlyCacheMap中的缓存,还没有最新注册的库存服务
6、再一次拉取注册列表的时候,直接从缓存中获取,发现缓存为空,此时会从 内存中的注册表获取最新注册信息
多级缓存机制的优点是什么? 尽可能保证了内存注册表数据不会出现频繁的读写冲突问题。 并且进一步保证对Eureka Server的大量请求,都是快速从纯内存走,性能极 高。
注册列表
定时检测心跳故障,默认60一次,优化成6秒一次
定时同步两个缓存,默认是30秒一次
2、获取注册表,库存服务一台机器
readWriteCacheMap
在拉取注册表的时候过程:首先从ReadOnlyCacheMap里查缓存的注册表。 若没有,就找ReadWriteCacheMap里缓存的注册表。 如果还没有,就从内存中获取实际的注册表数据。
心跳超时时间默认是90秒,可优化成9秒
默认是30秒发送一次
异步复制同步信息
收藏
0 条评论
回复 删除
下一页