您的位置:首页 > 编程语言 > Java开发

微服务学习SpringCloud之Eureka的自我保护机制

2019-06-14 07:45 1951 查看

写在前面:后续的文章都是基于第一篇文章进行更新,我是按照SpringCloud学习顺序进行文章编写,因为项目只有一个项目,需要了解SpringCloud前面skill的可以看一下前面SpringCloud体系。

在自己测试的时候是不是见过这种情况:

在控制台出现了这样的情况,别慌别慌,这个和你没关系,这是Eureka的自我保护机制锁所导致的。

        服务注册到Eureka之后,会维护一个心跳连接,告诉EurekaServer自己还活着。EurekaServer在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%。如果出现低于的情况(在单机调试的时候很容易满足,实际在生产环境上通常是由于网络不稳定导致),EurekaServer会将当前的实例注册信息保护起来,让这些实例不会过期,尽可能保护这些注册信息。但是,在这段保护期间内实例若出现问题吗,那么客户端很容易拿到实例已经不存在的服务实例,会出现调用失败的情况,所以客户端必须要有容错机制,比如可以使用请求重试/断路器等机制。

         由于本地调试很容易触发注册中心的保护机制,这会使得注册中心维护的服务实例不那么准确。所以,我们在本地进行开发的时候可以使用eureka.server.enabke-self-preservation=false参数来关闭保护机制,以确保注册中心可以将不可用的实例正确的剔除。

上面蓝色文字摘自《Spring Cloud 微服务实战》 p55

为此我做了一次测试

在eureka的模块添加如图所示的配置

重启服务,最后提示保护机制已经关闭,如下面情况

对于springcloud的容错机制,后面再继续学习。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: