我们讲解了Eureka当中的自我保护,我们看如何关闭自我保护,这个自我保护是谁来完成的,由我们Eureka Server来完成的,
所以我们需要在Eureka Server的配置文件当中,添加两个配置,这两个配置是什么意思呢,是自我保护的一个配置,这个key是
必须这么写的,然后这个key对应的是一个布尔类型值
eureka.server.enableSelfPreservation=false
true表示什么呢,表示开启自我保护,默认的就是开启自我保护,false为关闭自我保护,就是Eureka对注册的服务关闭时,需要将
value改成false,第二个就是清理间隔,清理间隔是什么意思呢,就是从服务列表当中,删除时间的一个设置,单位是毫秒
eureka.server.eviction.interval-timer-in-ms=60000
默认的是60*1000,也就是说一分钟,那么我们刚才也看到了,这里我也说了,90秒后,如果没有心跳包的话,可实际上他没有删除,
从我们的管理页面的列表当中,把这个服务删掉,没有删掉的原因咱们也说了,其实这个服务是自我保护状态的呢,还是存在的,
那我们先是要去掉自我保护,然后同时让他在服务列表当中,把这个服务去掉,因为你现在已经不是一个自我保护的状态了,这个服务
在收到心跳包以后,Eureka Server肯定会对这个服务做删除的,清理间隔时间是多少,是我们设置的一分钟,我们现在把这个配置文件
拿过来
#关闭自我保护:true为开启自我保护,false为关闭自我保护
eureka.server.enableSelfPreservation=false
#清理间隔(单位:毫秒,默认是60*1000)
eureka.server.eviction.interval-timer-in-ms=60000
添加到eureka-ha,eureka注册中心的集群版,打开他的配置文件,加到这里,这是一个,然后我们需要对项目做重新的打包处理,再部署
到我们的linux当中,然后我们重新打包,这边打包的时候呢,我们再看一下,我们是不是=得先把服务停掉,然后把原来的jar包删掉,
我们的启动脚本不用动,因为我们的项目无论怎么打包,我们的名称都是一样的,我们没有修改名称,我们看一下管理页面,现在是关闭的,
我们再来启动我们的服务,eureka正在启动,我们稍等一下,现在已经启动好了,我们看上面是不是多了一句话
THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF
NETWORK/OTHER PROBLEMS.the self preservation mode is turned off.this may not protect instance expiry
in case of network/other problems.
很明显和我们刚才看到的是有区别的,他说这个服务的自动保护模式已经取消了,现在在我们的Eureka服务的注册中心当中,
已经取消了对服务的自我保护,那我们接下来再看,在我们的代码当中,现在在吧我们的Provider和Consumer再去启动,把这个服务
再去启动,然后在过来启动Consumer,然后我们刷新,这个时候我们可以看到,现在这两个服务是不是都已经加进来了,说明这两个服务
在注册中心注册成功了,然后注意看,现在由于你这两个服务在注册中心当中呢,不再是自我保护的,因为我们已经关闭了自我保护模式,
然后现在我去关闭这个服务,注意我去关闭这两个服务,然后刷新,我们要等,因为我们在这里配的间隔,清理间隔,是一分钟,那么也就
意味着,我们现在去掉了服务的自我保护,那么也就意味着Eureka注册中心,将不会保留这个服务了,然后到达清理时间以后,他就会将
服务从管理界面当中把服务删除掉,然后我们提到的负载均衡,他在做服务处理的时候,也会将这个服务剔除,所以我们之前没有剔除服务的
原因就是,他还在,在的原因是他启动自我保护,这个大家应该能够听懂,我们刷新,一分钟还没到,经过漫长的等待,现在只删除了一个,
别着急,因为我们这个是后启动的,因为服务启动有一个服务启动的速度的问题,Consumer已经关了,这个一分钟之后就会关掉,Consumer
已经关掉了,所以说我们想做自我关闭呢,是通过在配置文件当中添加这两个配置,就可以关闭他的自我保护,然后 关闭所有保护之后,
之间间隔以后,它会自动的将这个服务从服务列表当中,删除掉,这样我们就去掉了自我保护的选项
server.port=8761
eureka.instance.hostname=eureka-server
#spring.application.name=eureka
#eureka.server.evictionIntervalTimerInMs=60000
eureka.client.serviceUrl.defaultZone=http://admin:1234@localhost:8761/eureka
#eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
#eureka.server.enableSelfPreservation=true
security.basic.enabled=true
security.user.name=admin
security.user.password=1234
eureka.datacenter=cloud
eureka.environment=product
#eureka.server.enable-self-preservation=false
eureka.server.enableSelfPreservation=false
eureka.server.eviction.interval-timer-in-ms=60000