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 から対応するサービス情報を取得します