当前位置:   article > 正文

Java配置19-eureka应用服务下线_eureka服务下线时间要3分钟

eureka服务下线时间要3分钟

目录

1.直接kill服务

2.在 eureka client 端中调用下线请求

​3.直接向 eureka server 端发送下线请求

4.更改应用服务状态


1.直接kill服务

在服务器上查到应用服务的进程号,然后执行命令

kill -9 进程号

不过这种方法是很粗暴的。这是因为 eureka client 端和 server 端是通过心跳进行续约的,
默认情况下,如果 eureka server 在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。
我用秒表测试了一下,发现整个过程需要将近3分钟的时间,eureka server 才会将实例从其注册表中删除。
这个时间可能包括了 eureka client 的心跳检测、服务列表删除以及信息同步等
    
这几个时间分别由服务端的参数和客户端共同控制

eureka server 端的参数

  1. #enable-self-preservation 设为false,关闭自我保护机制
  2. eureka.server.enable-self-preservation=false
  3. #eviction-interval-timer-in-ms 清理间隔(单位毫秒,默认是60*1000),可快速移除不可用的服务
  4. eureka.server.eviction-interval-timer-in-ms=5000

eureka client 端的参数

  1. #该配置指示eureka客户端需要向eureka服务器发送心跳的频率,默认值是 30s
  2. eureka.instance.lease-renewal-interval-in-seconds: 10
  3. #该配置指示eureka服务器在接收到最后一个心跳之后等待的时间,然后才能从列表中删除此实例,默认值是 90s
  4. eureka.instance.lease-expiration-duration-in-seconds: 30

修改完成后测试结果在1分钟左右。

即使缩短为1分钟,还是会影响服务的调用

2.在 eureka client 端中调用下线请求

在服务中开放一个接口,专门用来下线服务。

  1. import com.netflix.discovery.DiscoveryManager;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RequestMethod;
  4. import org.springframework.web.bind.annotation.RestController;
  5. /**
  6.  * @author cm
  7.  * @description: 测试服务下线
  8.  * @date 2022/2/21 9:45
  9.  */
  10. @RestController
  11. public class TestEureka {
  12.     @RequestMapping(value = "/offLine", method = RequestMethod.GET)
  13.     public void offLine() {
  14.         // 虽然提示DiscoveryManager已经过时,不过不影响使用
  15.         DiscoveryManager.getInstance().shutdownComponent();
  16.     }
  17. }

需要服务下线时,直接调用该请求即可


3.直接向 eureka server 端发送下线请求

 请求为

http://eureka server的IP:端口/eureka/apps/实例名称/实例地址加端口

上面的请求只是暂时的下线了应用服务,服务本身没有下线,还会重新续约,所以在发送请求之前需要先把服务停掉。

4.更改应用服务状态

可在服务器上执行更改应用服务状态

请求为

curl -X PUT "http://eureka server的IP:端口/eureka/apps/实例名称/实例地址加端口/status?value=OUT_OF_SERVICE"

 此时服务变为不可用的状态,不会再接收请求


但是有个地方需要注意,即使应用服务重启并重新注册到eureka ,此时的状态还是OUT_OF_SERVICE
需要执行恢复命令

curl -X PUT "http://eureka server的IP:端口/eureka/apps/实例名称/实例地址加端口/status?value=UP"

  

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/687692
推荐阅读
相关标签
  

闽ICP备14008679号