标签:class apple 开启 server space 接收 微信 str pre
localRegionApps
变量,用来保存从 Eureka Server 拉取回来的服务列表数据。
Eureka Client 在启动的时候发现 Eureka Server 都用不了,可能在Eureka Server启动失败,或者还没有启动,这样就会导致:
这样就无法和其他服务交互了,但是Eureka 可以通过他的备用机制解决这个问题。
Eureka Client 有一个属性:
1
|
eureka.client.backup-registry-impl |
这是 Eureka 为 Client 提供的一个 fallback,在启动的时候如果访问不到 Eureka Server,就会使用备用的 registry,把 backup-reg
istry
返回的服务列表保存到本地 localRegionApps
,这就可以正常和其他Service交互了。
Client 在访问 Server 时,不会一直按照配置文件中的顺序,会随机调换顺序,这样可以防止某个Server成为访问热点。
Eureka Client 维护了一个不可用 Server 列表,如果发现某个 Server 不可用,会将其放入这个不可用列表。
Client 在访问 Server 时,会排除掉不可用列表中的Server。
比如 Eureka Client 配置了3个 Server,server1、server2、server3
,假设 server3 故障了,Client 就把 server3 放入不可用列表,以后再访问 Server 时就排除掉 server3。
Client 曾从 Server 正常获取过服务列表数据,本地localRegionApps
存有服务列表。
如果 Server 都挂了,那么 Client 的定时程序访问 Server 时会抛出异常,便不会更新localRegionApps
变量,所以 Client 可以继续使用localRegionApps
中的服务列表,与其他Service正常交互。
Eureka Server 对于未续约的 Client 会认为它已经不可用了,就会从服务列表中删除。
但Client 未续约有时不是 Client 的问题,可能是因为网络因素,例如网络的抖动,所以,如果使用一刀切的判断方式,可能出现误判,Eureka 为了避免出现误判,设计了一种自我保护机制 Self Preservation
。
如果大面积出现了 Client 未续约的情况,不大可能这么多 Client 同时挂掉,为防止误判,就会开启自我保护,不会剔除 Client 实例,从而保护注册信息。
具体什么情况开启自我保护呢,可以配置一个阈值(默认值为 15%),只有在最近一分钟接收到的续约次数小于阈值的时候开启。
Eureka 通过如下机制来达到高可用:
即使 client 启动的时候 Eureka Server 都不可用也没关系,通过备用 registry 可以拿到服务列表。
client 会维护一个不可用server列表,避免访问失效的server。
在 Eureka Server 都失效时,本地的服务列表不会更新,使其依然可用,也就可以继续使用其中的service信息。
自我保护机制防止误删除client。
来源:内蒙古SEO
标签:class apple 开启 server space 接收 微信 str pre
原文地址:https://www.cnblogs.com/1994jinnan/p/11985632.html