EurekaInstanceConfig & EurekaClientConfig
Instance 是实例的意思, EurekaInstanceConfig 就是 eureka client 的配置文件中的服务实例信息。
EurekaInstanceConfig 就是将 eureka-client.properties 文件中的服务实例信息加载到 ConfigManager 中,然后基于 EurekaInstanceConfig 对外暴露接口,并且提供配置项的默认值。
ApplicationInfoManager,包含了服务实例的信息、配置,作为服务实例管理的一个组件,由 EurekaInstanceConfig 和 InstanceInfo 构建完成,InstanceInfo 的创建是在 new EurekaConfigBasedInstanceInfoProvider(instanceConfig).get()
中,用了构造器模式 LeaseInfo.Builder.newBuilder() 构造了一个复杂的代表一个服务实例的 InstanceInfo 对象。核心思想就是在 EurekaInstanceConfig 中读取各种实例相关的配置信息,再构造了一些其他的对象,最终完成 InstanceInfo 对象的构建。
DefaultEurekaClientConfig 就是和 DefaultEurekaServerConfig 一样,读取 erueka-client.properties 配置文件的内容。具体方法在 com.netflix.discovery.internal.util.initConfig() 中。最后都是交给 ConfigurationManager 管理。
EurekaInstanceConfig 和 EurekaClientConfig 虽然都是读取的 erueka-client.propeties ,但是读取的内容是不一样的。
EurekaInstanceConfig 接口
EurekaClientConfig 接口
DiscoveryClient
DiscoveryClient 是创建 Erueka Client 的类,由 ApplicationInfoManager 和 EurekaClientConfig 组成。
DiscoveryClient 代码很长。
- appPathIdentifier,服务实例的标识符, appName,代表了一个服务名称,但是一个服务可能部署多台机器,每台机器上部署的就是一个服务实例,如:serviceABC/001