springCloud eureka サービス登録検出ソースコード分析

1. spring-cloud-commons包

org.springframework.cloud.client.discovery.DiscoveryClient

org.springframework.cloud.client.serviceregistry.ServiceRegistry

2.エウレカクライアントサービス登録

@startuml
    EurekaAutoServiceRegistration -> EurekaServiceRegistry : register(EurekaRegistration reg) 
    EurekaServiceRegistry -> ApplicationInfoManager: setInstanceStatus(InstanceStatus status)
    ApplicationInfoManager -> DiscoveryClient : initScheduledTasks()
    DiscoveryClient -> DiscoveryClient: notify(StatusChangeEvent statusChangeEvent)
    DiscoveryClient -> instanceInfoReplicator : onDemandUpdate()
    instanceInfoReplicator -> instanceInfoReplicator : run()
    instanceInfoReplicator -> discoveryClient : register()
    discoveryClient -> EurekaHttpClientDecorator: register(final InstanceInfo info)
@enduml

3.エルエカクライアントサービスディスカバリ

 取得したサービスをローカル変数 this.localRegionApps に入れます

@startuml
    EurekaClientAutoConfiguration -> CloudEurekaClient : eurekaClient(ApplicationInfoManager manager, EurekaClientConfig config)
    CloudEurekaClient -> DiscoveryClient:     public CloudEurekaClient(ApplicationInfoManager applicationInfoManager, EurekaClientConfig config, AbstractDiscoveryClientOptionalArgs<?> args, ApplicationEventPublisher publisher) 
    DiscoveryClient -> DiscoveryClient : initScheduledTasks()
    DiscoveryClient -> DiscoveryClient.CacheRefreshThread: run()
    DiscoveryClient -> DiscoveryClient : refreshRegistry()
    DiscoveryClient -> DiscoveryClient : getAndStoreFullRegistry()
@enduml

        

4. エウレカリボン

@startuml
    RibbonClientConfiguration -> ZoneAwareLoadBalancer : ribbonLoadBalancer()
    ZoneAwareLoadBalancer -> ZoneAwareLoadBalancer:  ZoneAwareLoadBalancer()
    ZoneAwareLoadBalancer -> DynamicServerListLoadBalancer : DynamicServerListLoadBalancer()
    DynamicServerListLoadBalancer -> DynamicServerListLoadBalancer: restOfInit()
    DynamicServerListLoadBalancer -> DynamicServerListLoadBalancer : enableAndInitLearnNewServersFeature()
    DynamicServerListLoadBalancer -> DynamicServerListLoadBalancer : start()
    DynamicServerListLoadBalancer -> DynamicServerListLoadBalancer : updateListOfServers()
    DynamicServerListLoadBalancer -> DomainExtractingServerList : getUpdatedListOfServers()
    DynamicServerListLoadBalancer -> DiscoveryEnabledNIWSServerList : obtainServersViaDiscovery()
    DiscoveryEnabledNIWSServerList -> DiscoveryClient : getInstancesByVipAddress()
@enduml

getInstancesByVipAddress ローカル変数 this.localRegionApps から対応するサービス情報を取得します

おすすめ

転載: blog.csdn.net/caicongyang/article/details/126511682