Eureka多级缓存机制

一、缓存存储格式 ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>>

Eureka多级缓存机制

 

二、eureka 服务端缓存

  1. readOnlyCacheHashMap

    ConcurrentHashMap,定时从readWriteCacheMap同步数据,默认30s

  2. readWriteCacheHahMap

    Guava缓存,数据主要同步于存储层。当获取缓存时判断缓存中是否没有数据,如果不存在此数据,则通过 CacheLoader 的 load 方法去加载,加载成功之后将数据放入缓存,同时返回数据。默认180s过期,当服务下线、过期、注册、状态变更,都会来清除此缓存中的数据。

eureka 客户端缓存

  1. eureka Client 启动时会全量拉取服务列表,启动后每隔 30 秒从 Eureka Server 量获取服务列表信息,并保持在本地缓存中。

  2. ribbon 如果使用ribbon负载均衡,ribbon也有30s缓存

缓存工作方式:

Eureka多级缓存机制

 

优雅停机时默认最长感应时间 30(Ribbon) + 30(client) + 30(readOnlyCacheMap) + 180(readWriteCacheMap) = 270s