SpringCloud2之Eureka自我保护机制

Eureka 自我保护机制中的角色

EurekaClient 注册客户端
EurekaServer 注册中心服务端

为什么会产生Eureka自我保护机制:

是为了防止EurekaClient在可以正常运行的情况下,但是与EurekaServer网络不通(或超时)的情况下,EurekaServer将EurekaClient服务进行剔除,的一种保护机制.

SpringCloud2之Eureka自我保护机制_第1张图片
自我保护机制:

默认情况下EurekaClient定时向EurekaServer端发送心跳包(也就是定时向EurekaServer端发送请求)

如果EurekaServer在一定时间内(默认是90秒)没有收到EurekaCilent发送的心跳包,便会从服务注册列表中剔除改服务。但是在短时间内(不超过90秒)丢失了大量的服务实例心跳,这时候EurekaServer便会开启自我保护机制,不会去剔除改服务。

EurekaServer 默认是开启自我保护机制
一般建议在本地测试,开发环境关闭自我保护机制,真实,生产环境开启自我保护机制

关闭自我保护机制在EurekaServer端加入下面配置即可关闭(我这里是前面项目的eureka_service)

server:
    #测试时关闭自我保护机制,保证不可用服务及时剔除
    enable-self-preservation: false
    #间隔2秒剔除
    eviction-interval-timer-in-ms: 2000

SpringCloud2之Eureka自我保护机制_第2张图片

在服务提供者也就是EurekaClient的配置文件中加入以下配置(我这是是前面项目中的member_service)

   ##心跳检测与续约时间
          ##测试讲值设置小一点,保证服务关闭后注册中心能及时将服务剔除
        instance:
            ##EurekaClient 向注册中心发送心跳的时间间隔,(单位:秒)客户端告诉注册服务端自己会按照该规则发送心跳
          lease-renewal-interval-in-seconds: 1
          ##EurekaServer在收到最后一次心跳后等待的时间上限,(单位:秒),超过则剔除。客户端告诉注册服务端自己会按照该规则发送心跳
          lease-expiration-duration-in-seconds: 2

SpringCloud2之Eureka自我保护机制_第3张图片
EurekaClient从EurekaServer 注册中心拉取服务列表的默认时间是 每30秒拉取一次,所以配置后不能立即生效,只要等一次30秒后,EurekaClient拉取到最新的服务列表,就可以看到效果

你可能感兴趣的:(SpringBoot2.x,SpringCloud2.x,SpringCloud2.x)