Eureka 注册延迟

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15071263/article/details/82980717

Eureka 注册延迟


1、Eureka Client 的注册延迟

Eureka Client 启动之后,不是立即向 Eureka Server 注册的,而是有一个延迟向服务端注册 的时间。通过跟踪源码,可以发现默认的延迟时间为 40 秒

在类 DefaultEurekaClientConfig 中

    public int getInitialInstanceInfoReplicationIntervalSeconds() {
        return this.configInstance.getIntProperty(this.namespace + "appinfo.initial.replicate.time", 40).get();
    }
2、Eureka Server 的响应缓存

Eureka Server 维护每 30 秒更新一次响应缓存,可通过更改配置 eureka.server.responseCacheUpdatelntervalMs 来修改。所以即使是刚刚注册的实例,也不会立即出现在服务注册列表中

3、Eureka Client 缓存

Eureka Client 保留注册表信息的缓存。该缓存每 30 秒更新一次。因此, Eureka Client 刷新本地缓存并发现其他新注册的实例可能需要 30 秒

4、LoadBalancer 缓存

Ribbon 的负载平衡器从本地的 Eureka Client 获取服务注册列表信息。 Ribbon 本身还维护 了缓存,以避免每个请求都需要从 Eureka Client 获取服务注册列表。此缓存每 30 秒刷新一次 (可由 ribbon.ServerListRefreshlnterval 配置),所以可能至少需要 30 秒的时间才能使用新注册 的实例。 综上因素,一个新注册的实例,默认延迟 40 秒向服务注册中心注册,所以不能马上被 Eureka Server 发现。另外,刚注册的 Eureka Client 也不能立即被其他服务调用,原因是调用方 由于各种缓存没有及时获取到最新的服务注册列表信息

猜你喜欢

转载自blog.csdn.net/qq_15071263/article/details/82980717