服务注册发现_服务自保和服务剔除机制

服务注册发现_服务自保和服务剔除机制_第1张图片

服务剔除,服务自保,这两套功法一邪一正,俨然就是失传多年的上乘心法的上卷和下卷。但是往往你施展了服务剔除便无法施展服务自保,而施展了服务自保,便无法施展服务剔除。也就是说,注册中心在同一时刻,只能施展一种心法,不可两种同时施展。

服务剔除

服务注册发现_服务自保和服务剔除机制_第2张图片

注意:

服务剔除把服务节点果断剔除,即使你的续约请求晚了一步也毫不留情,招式凌厉,重在当断则断,忍痛割爱。

心法总决简明扼要:

欲练此功,必先自宫

服务自保

服务注册发现_服务自保和服务剔除机制_第3张图片

注意:

服务自保把当前所有节点保留,一个都不能少,绝不放弃任何队友。心法的指导思想是,即便主动删除,也许并不能解决问题,且放之任之,以不变应万变。

心法总决引人深思:

宫了以后,未必成功

如果不宫,或可成功

心法总纲

在实际应用里,并不是所有无心跳的服务都不可用,也许因为短暂的网络抖动等原因,导致服务节点与注册中心之间续约不上,但服务节点之间的调用还是属于可用状态,这时如果强行剔除服务节点,可能会造成大范围的业务停滞。

Euraka服务自保的触发机关

自动开关

服务注册发现_服务自保和服务剔除机制_第4张图片

注意:

服务自保模式往往是为了应对短暂的网络环境问题,在理想情况下服务节点的续约成功率应该接近100%,如果突然发生网络问题,比如一部分机房无法连接到注册中心,这时候续约成功率有可能大幅降低。但考虑到Eureka采用客户端的服务发现模式,客户端手里有所有节点的地址,如果服务节点只是因为网络原因无法续约但其自身服务是可用的,那么客户端仍然可以成功发起调用请求。这样就避免了被服务剔除给错杀。

手动开关

这是服务自保的总闸,以下配置将强制关闭服务自保,即便上面的自动开关被触发,也不能开启自保功能。

# 参数来关闭保护机制,以确保注册中心可以将不可用的实例正确剔除,默认为true。
eureka.server.enable-self-preservation=false;

你可能感兴趣的:(java,spring,cloud)