如何剔除eureka无效和down状态的问题

 更新时间:2023年07月10日 09:30:37   作者:岸河  
这篇文章主要介绍了如何剔除eureka无效和down状态的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

如何剔除eureka无效和down状态

在eureka server的web界面上

我们经常看见有的实例明明被我们关掉了,但是仍然展示在服务实例的列表里面,而且状态还是UP?

这种情况是eureka的自我保护机制导致的。由于eureka和实例之间要进行心跳检测,但是当网络故障时,eureka server不能准确判断这个实例时存活还是死亡,于是采取的默认策略是认为其任然存活。

这是eureka的AP思想(Availability-可用性,Partition-分区容错性)的体现,给予实例存活的状态。

当然我们也可以通过如下配置,来关掉eureka的自我保护机制(仅限开发环境),这样一旦接收不到实例心跳,就将其剔除。

eureka.server.enable-self-preservation=false

但是生产环境是不能使用这种配置的,否则网络状况一不稳定,就将本来是健康的实例剔除掉,会大大降低服务的可用性。

备注:有的文章说造成这种现象的原因是我们的服务没有正常关闭,IDEA中我们直接Stop服务会导致这种状况,如果选择Exit就不会出现这种情况。我还没有验证。

对于一些已经DOWN掉的节点

想直接剔除掉,不想让他展示在界面中?

这个问题和上个问题的解决办法是一致的,如下。

解决办法:

使用Postman发送delete请求,主动删除无效实例。

如图,我们构建上述DELETE请求

DELETE请求
http://localhost:8761/eureka/apps/ABC-BOOT/192.168.1.50:abc-boot:9020
# 格式
http://注册中心地址/eureka/apps/实例名称/节点详细信息

1.注意要使用DELETE请求;

2.注意JESSIONID可以从eureka界面的F12中获取,否则会验证失败。

eureka自动剔除无效的服务

由于Eureka拥有自我保护机制,当其注册表里服务因为网络或其他原因出现故障而关停时,Eureka不会剔除服务注册,而是等待其修复。这是AP的一种实现。

若要剔除无效服务,可以按照以下方式实现

在eureka注册服务中心上配置

server端配置:

eureka:
    server:
        enable-self-preservation: false
        eviction-interval-timer-in-ms: 4000
  • enable-self-preservation: 关闭自我保护模式(缺省为打开)
  • eviction-interval-timer-in-ms: 续期时间,即扫描失效服务的间隔时间

在eureka client节点上配置

client配置:

eureka:
    instance:
        lease-renewal-interval-in-seconds: 10
        lease-expiration-duration-in-seconds: 30
  • lease-renewal-interval-in-seconds:表示eureka client发送心跳给server端的频率
  • lease-expiration-duration-in-seconds: 发呆时间,即服务续约到期时间

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决Maven build打包,类找不到,找不到引用的那个项目里面的类问题

    解决Maven build打包,类找不到,找不到引用的那个项目里面的类问题

    文章讨论了在使用Maven构建项目时遇到类找不到的问题,并给出了解决方法,主要原因是公共项目被打成了可执行的jar,导致其他项目无法引用其中的类,解决方法包括在公共项目的pom中将打包类型改为普通jar,以及在主项目中正确引用公共项目
    2026-02-02
  • Java Swing JSlider滑块的实现示例

    Java Swing JSlider滑块的实现示例

    这篇文章主要介绍了Java Swing JSlider滑块的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java使用ReentrantLock进行加解锁的示例代码

    Java使用ReentrantLock进行加解锁的示例代码

    在多线程编程中,为了确保多个线程在访问共享资源时不会发生冲突,我们通常需要使用 锁 来同步对资源的访问,本文将深入探讨如何优雅地使用 ReentrantLock,避免常见的坑点,并提升代码的可维护性,需要的朋友可以参考下
    2025-04-04
  • 关于@Component注解下的类无法@Autowired问题

    关于@Component注解下的类无法@Autowired问题

    这篇文章主要介绍了关于@Component注解下的类无法@Autowired问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Go并发编程中使用channel的方法

    Go并发编程中使用channel的方法

    本文给大家介绍Go并发编程中使用channel的方法,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • 如何修改json字符串中某个key对应的value值

    如何修改json字符串中某个key对应的value值

    这篇文章主要介绍了如何修改json字符串中某个key对应的value值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • JavaGUI常用三种布局使用介绍

    JavaGUI常用三种布局使用介绍

    这篇文章主要介绍了JavaGUI常用三种布局-FlowLayout、BorderLayout、GridLayout,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03
  • 深度思考JDK8中日期类型该如何使用详解

    深度思考JDK8中日期类型该如何使用详解

    这篇文章主要介绍了JDK8中日期类型该如何使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Java中List.of()和Arrays.asList()的区别及原因分析

    Java中List.of()和Arrays.asList()的区别及原因分析

    这篇文章主要介绍了Java中List.of()和Arrays.asList()的区别及原因分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • JAVA中的注解机制解读

    JAVA中的注解机制解读

    这篇文章主要介绍了JAVA中的注解机制解读,通过调用Java的反射机制相关API来访问annotation信息,首先加载使用注解的类,得到class类,然后再得到类相应的方法,成员变量,需要的朋友可以参考下
    2023-10-10

最新评论