Eureka源码深度刨析-(2)EurekaClient启动流程

本文解析了EurekaClient启动过程,涉及配置文件读取、服务实例管理、网络通信组件构建及注册心跳操作。重点介绍了如何通过eureka-client.properties配置,创建并初始化EurekaClient实例,并跟踪了核心组件的初始化步骤。

“不积跬步,无以至千里。”

说完了Eureka Server的启动,现在再来看看Eureka Client是怎么启动的。

出发点是eureka-examples这个模块的一个Example类:ExampleEurekaClient

这个类相当于模拟了我们平时写的客户端程序,所以我们找到这个main()方法里的代码,启动流程的逻辑就在这个main()方法里;

public static void main(String[] args) {
   
   
    ExampleEurekaClient sampleClient = new ExampleEurekaClient();

    // create the client
    ApplicationInfoManager applicationInfoManager = initializeApplicationInfoManager(new MyDataCenterInstanceConfig());
    EurekaClient client = initializeEurekaClient(applicationInfoManager, new DefaultEurekaClientConfig());

    // use the client
    sampleClient.sendRequestToServiceUsingEureka(client);


    // shutdown the client
    eurekaClient.shutdown();
}

同样,我在这里梳理这个启动方法做的几件事情:

(1)读取eureka-client.properties配置文件,形成一个服务实例的配置,基于接口对外提供服务实例的配置项的读取,这个上一篇文章讲过,基于getXxx()的方法提供配置项读取是Eureka配置管理的套路;

new MyDataCenterInstanceConfig()

(2)基于服务实例的配置,构造了一个服务实例(InstanceInfo)

(3)基于服务实例的配置和服务实例,构造了一个服务实例管理器(ApplicationInfoManager)

private static synchronized ApplicationInfoManager initializeApplicationInfoManager(EurekaInstanceConfig instanceConfig) {
   
   
    if (applicationInfoManager == null) {
   
   
        //构造服务实例
        InstanceInfo instanceInfo = new EurekaConfigBasedInstanceInfoProvider(instanceConfig).get();
        //构造服务实例管理器
        applicationInfoManager = new ApplicationInfoManager(instanceConfig, instanceInfo);
    }

    return applicationInfoManager;
}

(4)读取eureka-client.properites配置文件,构建为一个DynamicPropertyFactory的配置类,接口对外提供eureka client的配置项的读取;

然后基于EurekaClient配置类构建了网络通信组件的配置类:EurekaTransportConfig,Eureka client启动,必然要向Eureka Server去注册服务以及抓取注册表,所以在这里一定会构建网络通信相关的东西;

public DefaultEurekaClientConfig(String namespace) {
   
   
    this.namespace = namespace.endsWith(".")
        ? namespace
        : namespace + ".";

    //private final DynamicPropertyFactory configInstance;
    //public static final String CONFIG_FILE_NAME = "eureka-client";
    this
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值