Eureka常见问题汇总及注意事项

0、前言      
      在Spring Cloud中,Eureka是接触和使用最多的组件,也是最重要的一个组件,在使用过程中经常会遇到各类突发问题,来的莫名奇妙。现把一些常见问题、注意事项,与大家进行分享。

     Eureka一般出现问题原因分为两类:

Eureka版本不同带来的问题
Eureka参数配置问题
生产环境下,Eureka参数配置建议使用默认配置,除非明确清楚或明确有这样修改默认配置的需求。

1、EnableEurekaClient和EnableDiscoveryClient
      在不同的应用程序中,有人使用EnableEurekaClient,有人使用EnableDiscoveryClient,都能作为Eureka Client的注解。有何区别呢?

     服务发现是有多实现方式,即:多种组件可以作为注册中心,eureka,consul,zookeeper,@EnableEurekaClient是在spring-cloud-netflix中,仅仅适合于Eureka注册中心。@EnableDiscoveryClient是在spring-cloud-commons中,适合Eureka、Consul、Zookeeper注册中心。在使用时要注意使用依赖的包,否则会发现找不到该注解。

参考:https://stackoverflow.com/questions/31976236/whats-the-difference-between-enableeurekaclient-and-enablediscoveryclient

2、已停止的微服务不注销或注销有延迟
     在使用Eureka Client时,可能会发现当微服务(Eureka Client)已经停止了,而注册中心仍然显示该服务处于正常状态,或者过段时间才会注销。然而,这种情况在实际应用中是大家不太希望看见的,希望一旦服务发生异常或宕机,注册中心应该理解体现出来。

     这是由于Eureka Server注销无效节点周期、自我保护模式的因素造成的,因此会出现服务不注销或注销有延迟。解决办法如下:

Eureka Server
关闭自我保护模式,并配置注销无效节点周期时间间隔。

# 默认值为true。设为false, 关闭自我保护, 从而保证会注销微服务
eureka.server.enable-self-preservation=false
 
# 清理间隔(单位毫秒,默认是60 * 1000)。根据需求将时间间隔设置短些,例如:设置1秒,一旦down掉,则会立即注销
eureka.server.eviction-interval-timer-in-ms=1000
Eureka自我保护模式:

    主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。

参考:https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication

参考:https://github.com/spring-cloud/spring-cloud-netflix/issues/1322

Eureka Client
当Client端开启健康检查时,可以适当的按需配置续约更新时间和到期时间。这样做智能在一定程度上缓解注销延迟的程度,但不能真正解决立即注销,可以在进行微服务(Eureka Client)异常或关机时,主动调用Eureka Rest API来注销该服务,注销接口:http://localhost:8761/eureka/apps的DELETE 请求方式。

# 默认值为false。设为true,开启健康检查(需要spring-boot-starter-actuator 依赖)
eureka.client.healthcheck.enabled=true
 
# 续约更新时间间隔(默认是30秒)
eureka.instance.lease-renewal-interval-in-seconds=?
 
# 续约到期时间(默认90秒)
eureka.instance.lease-expiration-duration-in-seconds=?
参考:https://stackoverflow.com/questions/39661399/eureka-slow-to-remove-instances

3、Eureka的UNKNOWN 问题
      注册中心(Eureka Server)中服务状态,常见的有UP、DOWN,但有时会出现另外一种UNKNOWN状态,或者UNKNOWN服务名。

更多请见:http://www.mark-to-win.com/tutorial/50405.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值