首页 > 社交 > 科普中国

Eureka源码3

常驻编辑 科普中国 2022-10-14 注解   增量   初始化   注册表   源码   实例   入口   状态   代码   时间   方法   信息
hni拜客生活常识网

public boolean onDemandUpdate() {
    if (rateLimiter.acquire(burstSize, allowedRatePerMinute)) {
        if (!scheduler.isShutdown()) {
            // 提交
            scheduler.submit(new Runnable() {
                @Override
                public void run() {
                    logger.debug("Executing on-demand update of local InstanceInfo");

                    Future latestPeriodic = scheduledPeriodicRef.get();
                    if (latestPeriodic != null && !latestPeriodic.isDone()) {
                        logger.debug("Canceling the latest scheduled update, it will be rescheduled at the end of on demand update");
                        // 取消定时任务
                        latestPeriodic.cancel(false);
                    }
                    // todo 执行 向 Server端重新 注册的请求
                    InstanceInfoReplicator.this.run();
                }
            });
            return true;
        } else {
            logger.warn("Ignoring onDemand update due to stopped scheduler");
            return false;
        }
    } else {
        logger.warn("Ignoring onDemand update due to rate limiter");
        return false;
    }
}

InstanceInfoReplicator#onDemandUpdate 方法中调用 InstanceInfoReplicator#run 方法检查服务实例信息和服务状态的变化,并在服务实例信息和服务状态发生变化的情况下向 Eureka Server 发起重新注册的请求,为了防止重新执行 run 方法,onDemandUpdate 方法还会取消执行上次已经提交且未完成的 run方法,执行最新的按需注册任务。hni拜客生活常识网

4.4 总结

服务注册的时机

Client提交register()请求的情况有三种:hni拜客生活常识网

  • 在应用启动时就可以直接进行register(),不过,需要提前在配置文件中配置
  • 在renew时,如果server端返回的是NOT_FOUND,则提交register()
  • 当Client的配置信息发生了变更,则Client提交register()

Client实例化

Eureka Client 实例化的时候有几个重要步骤,分别如下:hni拜客生活常识网

  • 全量拉取注册表信息,放入自己本地注册表中。
  • 创建定时任务, 定时服务续约任务,默认是30s, 定时更新 客户端注册表信息,默认是30s, 定时更新Client信息给Server端,重新服务注册,默认是40s。

参考文章

eureka-0.10.11源码(注释)
springcloud-source-study学习github地址
Eureka源码解析
SpringCloud技术栈系列文章hni拜客生活常识网

相关阅读:

  • 分支信息注释
  • Spring
  • 抄书第十六天,今天你微笑了吗
  • 一波带走,SpringBoot
  • 最真实的注解,值得永久收藏
  • 自定义的配置文件,如何注入到SpringBoot?
  • 道德经第四十六章原文及注解 第十四章道德经解释 道德
  • SpringCloudAlibaba
  • Mybatis框架使用(一)
  • 八月的最后一个星期天,我“奢侈”了
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。