Eureka知识总结

Eureka工作流程图

注册

  1. Eureka在应用启动时,会在EurekaAutoServiceRegistration这个类初始化的时候,主动去Eureka Server端注册。

  2. Eureka在启动完成之后会启动一个40秒执行一次的定时任务,该任务会去监测自身的 IP信息以及自身的配置信息是否发生改变,如果发生改变,则会重新发起注册,详情可见:深入理解lastDirtyTimestamp

  3. 续约返回404状态码时,会去重新注册

详情可见: 深入理解Eureka 服务注册(二)

下线

Eureka会在spring容器销毁的时候执行shutDown方法 , 该方法首先会将自身的状态改为 DOWN,接着发送cancle命令至

Eureka Server请求下掉自己的服务。

详情可见:

深入理解Eureka 主动下线(四)

Eureka 状态变更说明

心跳

Eureka在系统启动后,会创建一个每30秒执行一次的定时任务。用来发送心跳, 也就是说心跳是30秒一次,用来告知

服务端我还活着

详情可见:

Eureka 心跳续约(三)

过期

Eureka 过期时间默认是90秒, 这个配置客户端可以自定义,如果客户端配置了,则以客户端的为准。

Eureka Server在启动完成之后,会初始化一个清理过期实例的线程,每60秒执行一次。

详情可见:

深入理解Eureka 实例过期(六)

自我保护机制Eureka Server维护了两个变量:

expectedNumberOfRenewsPerMin :每分钟最大的续约数量,由于客户端是每30秒续约一次,一分钟就是续约2次, count代表的是客户端数量
​
所以这个变量的计算公式 : 客户端数量*2 
​
numberOfRenewsPerMinThreshold : 每分钟最小续约数量, 使用expectedNumberOfRenewsPerMin * serverConfig.getRenewalPercentThreshold()。
​
serverConfig.getRenewalPercentThreshold()的默认值为0.85 , 也就是说每分钟的续约数量要大于85% 。 

如果每分钟的续约数小于numberOfRenewsPerMinThreshold ,则自我保护机制开启,Eureka Server将不会主动清除过期实例

详情可见:

深入理解Eureka 自我保护机制(五)

EurekaClient获取实例信息

  1. Eureka Client 在刚刚启动的时候,会主动全量获取一次实例信息。

  2. 启动一个每30秒执行一次的定时任务,用来从服务端获取注册信息,这个时候一般是增量获取。当然有特殊情况也会全量获取

详情可见:

Eureka 获取注册信息(七

Eureka 缓存机制(八)

Eureka Server集群重启问题追踪

集群同步

Eureka Server 收到来自客户端的 注册,下线,心跳等操作时,会将操作同步给相邻的集群节点

  1. 同步操作采用异步的方式,Eureka Server构建同步信息的任务,放入线程池,供线程异步来跑,默认是批量同步,即线程会一次性从队列里面取走所有数据进行同步, 如果相邻Eureka Server Node不可用,会进行重试,超出过期时间,则该同步任务放弃。过期时间默认为30秒

  2. 通过HTTP的方式发送请求给其他Eureka Server,比如:register, Eureka Server收到其他节点的批量同步注册请求,会调用本地的register方法,跟客户端注册走的流程一直,只不过方法参数isReplication = true如此,带有isReplication = true是不会继续同步给其他节点的,避免了循环同步流程图如下:

常见问题解答

 Eureka常见问题

线上案例分析

Eureka Server集群重启问题追踪

Eureka控制台图解

Eureka控制台参数说明

猜你喜欢

转载自blog.csdn.net/u012394095/article/details/81127371