当前位置:   article > 正文

Eureka是Netflix开源的、用于实现服务注册和发现的服务_eureka 是 netflix 开源的服务注册发现组件。 当eureka没有配置认证授权时,未经授

eureka 是 netflix 开源的服务注册发现组件。 当eureka没有配置认证授权时,未经授

  Eureka是Netflix开源的、用于实现服务注册和发现的服务。Spring Cloud Eureka基于Eureka进行二次封装,增加了更人性化的UI,使用更为方便。但是由于Eureka本身存在较多缓存,服务状态更新滞后,最常见的状况是:服务下线后状态没有及时更新,服务消费者调用到已下线的服务导致请求失败。本文基于Spring Cloud Eureka 1.4.4.RELEASE,在默认region和zone的前提下,介绍Eureka的缓存机制。
  
  一、AP特性
  
  从CAP理论看,Eureka是一个AP系统,优先保证可用性(A)和分区容错性(P),不保证强一致性(C),只保证最终一致性,因此在架构中设计了较多缓存。
  
  Eureka高可用架构
  
  二、服务状态
  
  Eureka服务状态enum类:com.netflix.appinfo.InstanceInfo.InstanceStatus
  
  状态    说明    状态    说明
  
  UP    在线    OUT_OF_SERVICE    失效
  
  DOWN    下线    UNKNOWN    未知
  
  STARTING    正在启动     
  
  三、Eureka Server
  
  在Eureka高可用架构中,Eureka Server也可以作为Client向其他server注册,多节点相互注册组成Eureka集群,集群间相互视为peer。Eureka Client向Server注册、续约、更新状态时,接受节点更新自己的服务注册信息后,逐个同步至其他peer节点。
  
  【注意】如果server-A向server-B节点单向注册,则server-A视server-B为peer节点,server-A接受的数据会同步给server-B,但server-B接受的数据不会同步给server-A。
  
  3.1 缓存机制
  
  Eureka Server存在三个变量:(registry、readWriteCacheMap、readOnlyCacheMap)保存服务注册信息,默认情况下定时任务每30s将readWriteCacheMap同步至readOnlyCacheMap,每60s清理超过90s未续约的节点,Eureka Client每30s从readOnlyCacheMap更新服务注册信息,而UI则从registry更新服务注册信息。
  
  三级缓存
  
  缓存    类型    说明
  
  registry    ConcurrentHashMap    实时更新,类AbstractInstanceRegistry成员变量,UI端请求的是这里的服务注册信息
  
  readWriteCacheMap    Guava Cache/LoadingCache    实时更新,类ResponseCacheImpl成员变量,缓存时间180秒
  
  readOnlyCacheMap    ConcurrentHashMap    周期更新,类ResponseCacheImpl成员变量,默认每30s从readWriteCacheMap更新,Eureka client默认从这里更新服务注册信息,可配置直接从readWriteCacheMap更新
  
  缓存相关配置
  
  配置    默认    说明
  
  eureka.server.useReadOnlyResponseCache    true    Client从readOnlyCacheMap更新数据,false则跳过readOnlyCacheMap直接从readWriteCacheMap更新
  
  eureka.server.responsecCacheUpdateIntervalMs    30000    readWriteCacheMap更新至readOnlyC

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/794158
推荐阅读
相关标签
  

闽ICP备14008679号