eureka客户端如何拉取服务端已保存的服务信息?
1 个回答
不必太张扬,是花自然香。ketty在知道客户端是如何拉取服务端信息的同时,也需要清楚以下问题: 是需要时才去服务端拉取,还是先拉取到本地,需要用的时候直接从本地获取? ### 1、源码分析 我们回到问题1的1.1节的initScheduledTasks方法中: ```java private void initScheduledTasks() { if (clientConfig.shouldFetchRegistry()) { // registry cache refresh timer int registryFetchIntervalSeconds = clientConfig.getRegistryFetchIntervalSeconds(); int expBackOffBound = clientConfig.getCacheRefreshExecutorExponentialBackOffBound(); scheduler.schedule( new TimedSupervisorTask( "cacheRefresh", scheduler, cacheRefreshExecutor, registryFetchIntervalSeconds, TimeUnit.SECONDS, expBackOffBound, new CacheRefreshThread() ), registryFetchIntervalSeconds, TimeUnit.SECONDS); } ... } ``` 上述代码中初始化了一个刷新缓存的定时任务,我们看到第14行的新建了一个线程CacheRefreshThread(源码不再列出),既是用来定时刷新服务端已保存的服务信息。 ### 2、总结 通过源码总结:客户端拉取服务端服务信息是通过一个定时任务定时拉取的,每次拉取后刷新本地已保存的信息,需要使用时直接从本地直接获取。发布于 2022-03-06 13:30 •IP属地 云南举报评论收藏
公众号进入网站体验更佳

