第二部分粗略的过一遍,还是有些模糊,再来相对系统的看一下:
----------------------------------------------------------------------------------------------------
1、ureka 的注册延迟
eureka client启动后,不是立即向eureka server注册,而是有一个延迟向服务端注册的时间。跟踪代码可以看到默认延迟时间是40秒,代码在DefaultEurekaClientConfig的getInitialInstanceInfoReplicationIntervalSeconds方法中。
2、ureka server的相应缓存
eureka server每30秒更新一次响应缓存,可以通过更改配置eureka.server.responseCacheUpdateIntervalMs来修改。所以即使是刚注册的实例,也可能不会立即出现在服务注册列表中。
3、eureka client的缓存
eureka client保存注册表信息的缓存每30秒更新一次,隐刺client刷新本地缓存并发现其它新注册实例的时间也需要30秒。
4、loadBalance的缓存
ribbon的负载均衡器从本地eureka client获取服务列表信息,ribbon本身还维护了缓存,以避免每个请求都从eureka client获取服务注册列表。此缓存每30秒刷新一次(可由ribbon.ServerListRefreshInterval配置),所以可能至少需要30秒的时间才能使用新注册的实例。
综上,一个新的实例,从启动到被调用可能花费的最大时间为:40+30+30+30=130秒,时间还是挺长的。
----------------------------------------------------------------------------------------------------