“不积跬步,无以至千里。”
说完了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

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

被折叠的 条评论
为什么被折叠?



