spring-cloud学习笔记基于spring-boot2.0.3--Eureka注册中心(三)自我保护模式及相关问题

21 篇文章 1 订阅
10 篇文章 0 订阅

 因为是个人服务器,虽然采用集群的方式部署,但是Eureka的三个节点我都是部署在一台服务器上,在运行过程中会出现异常提示,Eureka已经进入自我保护模式。

    那么首先我们来说下什么是自我保护模式:

        当 Eureka Server 节点在短时间内丢失了过多实例的连接时(比如网络故障或频繁的启动关闭客户端),那么这个节点就会进入自我保护模式,一旦进入到该模式,Eureka server 就会保护服务注册表中的信息,不再删除服务注册表中的数据(即不会注销任何微服务),当网络故障恢复后,该 Ereaka Server 节点就会自动退出自我保护模式

        默认情况下,如果 Ereaka Server 在一段时间内没有接受到某个微服务示例的心跳,便会注销该实例(默认90秒),而一旦进入自我保护模式,那么即使你关闭了指定实例,仍然会发现该 Ereaka Server 的注册实例中会存在被关闭的实例信息,如果你对该实例做了负载均衡,那么仅关闭了其中一个实例,则通过网关调用接口api时很可能会发生如下异常:

{
    "timestamp": 1507707671780,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "com.netflix.zuul.exception.ZuulException",
    "message": "GENERAL"
}

      遇到这个问题解决方法有很多种。

      第一种:重启Eureka服务

      第二种:修改自我保护系数

      第三种:简单粗暴,直接关闭自我保护模式。

     # 关闭自我保护模式
     enable-self-preservation: false
     # Eureka Server 自我保护系数,当enable-self-preservation=true时,启作用
     # renewal-percent-threshold:

      个人建议,在开发过程中关闭自我保护模式,但是在生成环境中不建议关闭,存在的目的就是为了对注册中心进行一种防护。

       后语:在实际开发过程中,建议现在测试环境上搭建好注册中心的集群,开发人员不需要每次都启动本地的注册中心进行注册,所有的服务提供者和消费者都使用统一的注册中心进行注册,不管是对于联调,还是各种异常情况的处理还是有一定的好处的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值