如何创建一个Eureka Client?
EurekaInstanceConfig & EurekaClientConfig
Instance 是實例的意思, EurekaInstanceConfig 就是 eureka client 的配置文件中的服務實例信息。
EurekaInstanceConfig instanceConfig = isCloud(ConfigurationManager.getDeploymentContext())? new CloudInstanceConfig(): new MyDataCenterInstanceConfig();applicationInfoManager = new ApplicationInfoManager(instanceConfig, new EurekaConfigBasedInstanceInfoProvider(instanceConfig).get());EurekaClientConfig eurekaClientConfig = new DefaultEurekaClientConfig();EurekaInstanceConfig 就是將 eureka-client.properties 文件中的服務實例信息加載到 ConfigManager 中,然后基于 EurekaInstanceConfig 對外暴露接口,并且提供配置項的默認值。
ApplicationInfoManager,包含了服務實例的信息、配置,作為服務實例管理的一個組件,由 EurekaInstanceConfig 和 InstanceInfo 構建完成,InstanceInfo 的創建是在?new EurekaConfigBasedInstanceInfoProvider(instanceConfig).get()?中,用了構造器模式 LeaseInfo.Builder.newBuilder() 構造了一個復雜的代表一個服務實例的 InstanceInfo 對象。核心思想就是在 EurekaInstanceConfig 中讀取各種實例相關的配置信息,再構造了一些其他的對象,最終完成 InstanceInfo 對象的構建。
public synchronized InstanceInfo get() {if (instanceInfo == null) {// Build the lease information to be passed to the server based on configLeaseInfo.Builder leaseInfoBuilder = LeaseInfo.Builder.newBuilder().setRenewalIntervalInSecs(config.getLeaseRenewalIntervalInSeconds()).setDurationInSecs(config.getLeaseExpirationDurationInSeconds());if (vipAddressResolver == null) {vipAddressResolver = new Archaius1VipAddressResolver();}//代碼太長,省略其他代碼} }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 組成。
eurekaClient = new DiscoveryClient(applicationInfoManager, eurekaClientConfig);DiscoveryClient 代碼很長。
總結
先創建了 EurekaInstanceConfig,基于 EurekaInstanceConfig 和 InstanceInfo 創建 ApplicationInfoManager,之后才創建 DiscoveryClient。
總結
以上是生活随笔為你收集整理的如何创建一个Eureka Client?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 它来了,阿里架构师的“Java多线程+并
- 下一篇: 阿里技术官最新总结一份105道Java面