• Eukeka未删除已经停止的服务


    开发过程中,Eukeka服务端和客户端配置我们一般使用默认配置,但经常发现有些已经停止的服务没有从注册中心删除或很久才删除,关键在于Eureka心跳检测和自我保护机制。客户端按固定周期(lease-renewal-interval-in-seconds)向服务端发送心跳请求,服务端按固定周期(eviction-interval-timer-in-ms)开启EvictionTask任务,在允许租约过期(Eureka在自我保护状态中是不允许租约过期的)的情况下,扫描注册的服务,若发现有租约过期则删除租约(即删除服务注册)。

    客户端的心跳检测参数:

    eureka.instance.lease-renewal-interval-in-seconds: 5                      # 心跳检测间隔时间,默认30
    eureka.instance.lease-expiration-duration-in-seconds: 8                # 过期时间,必须大于心跳间隔时间,默认90

    服务端的服务租约检测:

    eureka.server.enable-self-preservation = false # 是否开启自我保护机制,默认true
    eureka.server.eviction-interval-timer-in-ms = 10000 # 剔除无效服务间隔时间,单位毫秒,默认1分钟

    服务端判断租约是否过期方式为 当前时间>最后一次心跳时间+过期时间(lease-expiration-duration-in-seconds),代码如下:

    上面代码,duration就是客户端定义的过期时间,additionalLeaseMs可以当做0

    若使用默认配置,从服务关闭到从Eureka注册中心删除该服务,最多需要(90+60)秒

  • 相关阅读:
    关于在组件GIS开发中使用Python的一点补充说明
    shell环境变量以及set,env,export的区别
    快速配置 Samba 将 Linux 目录映射为 Windows 驱动器
    Expect 教程中文版
    rpm 包管理
    .bash_profile和.bashrc的什么区别
    grep 零宽断言
    自动化测试
    dialog shell下的gui设计 代替繁杂libncurses编程
    x11 gtk qt gnome kde 之间的区别和联系
  • 原文地址:https://www.cnblogs.com/zhi-leaf/p/12125135.html
Copyright © 2020-2023  润新知