• Eureka常见问题


    一 Eureka注册慢问题
    默认情况下,服务注册到Eureka Server过程较慢。在开发或测试时,常常希望加速这一过程,从而提高工作效率。
    服务注册涉及到周期性心跳,默认30秒一次。只有当实例、服务端和客户端的本地缓存中的元数据都相同时,服务才能被其他客户端发现(所以可能需要3次心跳)。
    可以使用参数eureka.instance.leaseRenewalintervalInSeconds修改时间间隔,从而加快客户端连接到其他服务的过程。在生产环境中最好坚持使用默认值,因为在服务器内部有一些计算,它们会对续约做出假设。
    综上,要想解决服务注册慢的问题,只须将eureka.instance.leaseRenewalintervalInSeconds设成一个更小的值。该配置用于设置Eureka Client向Eureka Server发送心跳的时间间隔,默认是30,单位是秒。在生产环境中,建议坚持使用默认值。

    二 已停止的微服务节点注销慢或不注销
    1 原因
    在开发环境下,常常希望Eureka Server能快速有效地注销已停止的微服务实例。然而,由于Eureka Server清理无效节点周期长(默认90秒),以及自我保护模式等原因,可能会遇到微服务注销慢甚至不注销问题。
    2 解决方法:
    Eureka Server端:
    配置关闭自我保护,并按需配置Eureka Server清理无效节点的时间间隔。
    eureka.server.enable-self-preservation
    #设为false,关闭自我保护,从而保证会注销微服务
    eureka.server.eviction-interval-time-in-ms
    #清理间隔(单位毫秒,默认是60*1000)
    Eureka Client端:
    配置开启健康检查,并按需配置续约更新时间和到期时间。
    eureka.client.healthcheck.enabled
    #设为true,开启健康检查(需要sping-boot-start-actuator依赖)
    eureka.instance.lease-renewal-interval-in-seconds
    #续约更新时间间隔(默认30秒)
    eureka.instance.lease-expiration-duration-in-seconds
    #续约到期时间(默认90秒)
    注意:这些配置仅在开发或测试时使用,生产环境建议坚持使用默认值。
    3 实例
    Eureka Server配置:
    eureka:
    server:
    eureka.server.enable-self-preservation: false
    eureka.server.eviction-interval-time-in-ms: 4000
    Eureka Client配置:
    eureka:
    client:
    healthcheck:
    enabled: true
    instance:
    lease-expiration-duration-in-seconds: 30
    lease-renewal-interval-in-seconds: 10

    三 如何自定义微服务的Instance ID
    Instance ID用于唯一标识注册到Eureka Server上的微服务实例。
    在Eureka Server首页可以直观地看到各个微服务的Instance ID。
    在Spring Cloud中,服务的Instance ID默认值是${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}}。如果想要自定义这部分内容,只须在微服务中配置eureka.instance.instance-id属性即可,例如:
    spring:
    application:
    name: microservice-prodider-user
    eureka:
    instance:
    #将Instance ID设置为IP:端口的形式
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
    这样,就可将微服务microservice-prodider-user的Instance ID设为  IP:端口的形式。

    四 Eureka 的UNKNOWN问题总结与解决
    注册UNKNOWN问题,一般分两种情况,一种是应用名称UNKNOWN,另外一种是应用状态UNKNOWN。下面分别讨论这两种情况。
    1 应用名称UNKNOWN
    未配置spring.application.name或者eueka.instance.appname属性。如果这两属性都不配置,就会导致应用名称UNKNOWN问题。
    2 微服务实例状态UNKNOWN
    微服务实例的状态UNKNOWN同样很麻烦。一般来讲,只会请求状态是UP的微服务。该问题一般由监控检查导致。
    eureka.client.healthcheck.enabled=true必须设置在application.yml中,而不能设置在bootstrap.yml中,否则一些场景下会导致UNKNOWN的问题。 
    ---------------------
    作者:cakincqm
    来源:CSDN
    原文:https://blog.csdn.net/chengqiuming/article/details/80948516
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    函数之返回值
    函数之初识函数
    三元运算符
    枚举enumerate
    模块
    迭代器
    斐波那契
    leetcode155 最小栈
    leetcode94 二叉树的中序遍历
    leetcode20 有效的括号
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/10901689.html
Copyright © 2020-2023  润新知