Spirng Eureka 默认配置解读缓存
默认的Spring Eureka服务器,服务提供者和服务调用者配置不够灵敏,老是服务提供者在停掉好久以后,服务调用者很长时间并无感知到变化。或者是服务已经注册上去了,可是服务调用方很长时间仍是调用不到,发现不了这个服务。服务器
Spring Eureka 默认配置下:spa
描述以下:code
服务提供者和服务调用者配置不够灵敏,老是服务提供者在停掉好久以后,服务调用者很长时间并无感知到变化的缘由:
EurekaServer本身的ReadWriteMap缓存失效延迟,刷新到ReadOnlyMap的延迟,服务调用者本身本地缓存刷新的延迟。server
服务已经注册上去了,可是服务调用方很长时间仍是调用不到,发现不了这个服务:
刷新到ReadOnlyMap的延迟,服务调用者本身本地缓存刷新的延迟blog
EurekaServer修改以下配置:it
1 #eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap,这个时间决定了多久会把readWriteCacheMap的缓存更新到readCacheMap上 2 #默认30s 3 eureka.server.responseCacheUpdateIntervalMs=3000 4 #eureka server缓存readWriteCacheMap失效时间,这个只有在这个时间过去后缓存才会失效,失效前不会更新,过时后从registry从新读取注册服务信息,registry是一个ConcurrentHashMap。 5 #因为启用了evict其实就用不太上改这个配置了 6 #默认180s 7 eureka.server.responseCacheAutoExpirationInSeconds=180 8 9 #启用主动失效,而且每次主动失效检测间隔为3s 10 eureka.server.eviction-interval-timer-in-ms=3000
Eureka服务提供方修改以下配置:io
1 #服务过时时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除 2 #注意,EurekaServer必定要设置eureka.server.eviction-interval-timer-in-ms不然这个配置无效,这个配置通常为服务刷新时间配置的三倍 3 #默认90s 4 eureka.instance.lease-expiration-duration-in-seconds=15 5 #服务刷新时间配置,每隔这个时间会主动心跳一次 6 #默认30s 7 eureka.instance.lease-renewal-interval-in-seconds=5!
Eureka服务调用方修改以下配置:class
1 #eureka client刷新本地缓存时间 2 #默认30s 3 eureka.client.registryFetchIntervalSeconds=5 4 #eureka客户端ribbon刷新时间 5 #默认30s 6 ribbon.ServerListRefreshInterval=5000