加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

程序员笔记 | 详解Eureka缓存机制

发布时间:2019-05-19 16:35:52 所属栏目:教程 来源:冯永彪
导读:Eureka是Netflix开源的、用于实现处事注册和发明的处事。Spring Cloud Eureka基于Eureka举办二次封装,增进了更人道化的UI,行使更为利便。可是因为Eureka自己存在较多缓存,处事状态更新滞后,最常见的状况是:处事下线后状态没有实时更新,处事斲丧者调
副问题[/!--empirenews.page--]

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高可用架构)

二、处事状态

Eureka处事状态enum类:

  1. com.netflix.appinfo.InstanceInfo.InstanceStatus 

措施员条记 | 详解Eureka缓存机制

三、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。

1. 缓存机制

Eureka Server存在三个变量:(registry、readWriteCacheMap、readOnlyCacheMap)生涯处事注册信息,默认环境下按时使命每30s将readWriteCacheMap同步至readOnlyCacheMap,每60s整理高出90s未续约的节点,Eureka Client每30s从readOnlyCacheMap更新处事注册信息,而UI则从registry更新处事注册信息。

措施员条记 | 详解Eureka缓存机制

三级缓存:

三级缓存

缓存相干设置:

缓存相干设置

要害类:

措施员条记 | 详解Eureka缓存机制

四、Eureka Client

Eureka Client存在两种脚色:处事提供者和处事斲丧者,作为处事斲丧者一样平常共同Ribbon或Feign(Feign内部行使Ribbon)行使。Eureka Client启动后,作为处事提供者当即向Server注册,默认环境下每30s续约(renew);作为处事斲丧者当即向Server全量更新处事注册信息,默认环境下每30s增量更新处事注册信息;Ribbon延时1s向Client获取行使的处事注册信息,默认每30s更新行使的处事注册信息,只生涯状态为UP的处事。

二级缓存:

措施员条记 | 详解Eureka缓存机制

缓存相干设置:

缓存相干设置

要害类:

措施员条记 | 详解Eureka缓存机制

五、默认设置下处事斲丧者最长感知时刻

措施员条记 | 详解Eureka缓存机制

思量如下环境:

  • 0s时处事未关照Eureka Client直接下线;
  • 29s时第一次逾期搜查evict未高出90s;
  • 89s时第二次逾期搜查evict未高出90s;
  • 149s时第三次逾期搜查evict未续约时刻高出了90s,故将该处究竟例从registry和readWriteCacheMap中删除;
  • 179s时按时使命从readWriteCacheMap更新至readOnlyCacheMap;
  • 209s时Eureka Client从Eureka Server的readOnlyCacheMap更新;
  • 239s时Ribbon从Eureka Client更新。

因此,极限环境下处事斲丧者最长感知时刻将无穷趋近240s。

措施员条记 | 详解Eureka缓存机制

六、应对法子

处事注册中心在选择行使Eureka时声名已经接管了其优先担保可用性(A)和分区容错性(P)、不担保强同等性(C)的特点。假如必要优先担保强同等性(C),则应该思量行使ZooKeeper等CP体系作为处事注册中心。漫衍式体系中一样平常设置多节点,单个节点处事上线的状态更新滞后并没有什么影响,这里首要思量处事下线后状态更新滞后的应对法子。

1. Eureka Server

  • 收缩readOnlyCacheMap更新周期。收缩该按时使命周期可镌汰滞后时刻。
    1. eureka.server.responsecCacheUpdateIntervalMs: 10000  # Eureka Server readOnlyCacheMap更新周期 
  • 封锁readOnlyCacheMap。中小型体系可以思量该方案,Eureka Client直接从readWriteCacheMap更新处事注册信息。
    1. eureka.server.useReadOnlyResponseCache: false        # 是否行使readOnlyCacheMap 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读