转载

Spring Cloud - Eureka服务注册

spring-cloud-config环境中使用的配置

引入 EurekaDiscoveryClientConfigurationEurekaClientAutoConfiguration

EurekaDiscoveryClientConfiguration

  1. 在spring-cloud中(通过是否存在RefreshScopeRefreshedEvent.class判断), 添加 RefreshScopeRefreshedEvent 的listener. 收到事件后重新注册实例.
  2. eureka.client.healthcheck.enabled 设置为true时, 注册 EurekaHealthCheckHandler bean. EurekaHealthCheckHandler 负责将应用状态映射为实例状态 InstanceStatus .

EurekaClientAutoConfiguration

支持spring-cloud和非spring-cloud环境, 在spring-cloud环境中, 下面两个bean要使用 @RefreshScope 标注

  1. 实例化 EurekaClient bean, 在spring-cloud中使用实现类 CloudEurekaClient .
  2. 使用 EurekaInstanceConfig 实例, 实例化 ApplicationInfoManager bean

EnableAutoConfiguration

EurekaClientConfigServerAutoConfiguration

在spring-cloud-config的环境中, 将 configPath 加入到实例的metadata map中.

EurekaDiscoveryClientConfigServiceAutoConfiguration

当config客户端希望通过服务发现寻找config服务的时候使用的引导配置

spring.cloud.config.discovery.enabledtrue 时, 关闭父application context里实例化的 EurekaClient 实例. 只使用当前上下文里的实例.

EurekaClientAutoConfiguration

核心配置

支持spring-cloud(支持动态配置)和非spring-cloud环境, EurekaClientEurekaInstanceConfig 两个bean要使用 @RefreshScope 标注

  1. 实例化当前服务实例信息 EurekaInstanceConfigBean 的实例
  2. 实例化 DiscoveryClient 的实现, 在这里是 EurekaDiscoveryClient
  3. 实例化 EurekaServiceRegistry
  4. 实例化 EurekaRegistration
  5. 实例化 EurekaAutoServiceRegistration , 这个类实现了StartLifecycle接口. 在ApplicationContext refresh或者shutdown之后注册或者注销当前实例
  6. 实例化 EurekaClient bean, 在spring-cloud中使用实现类 CloudEurekaClient
  7. 使用 EurekaInstanceConfig 实例, 实例化 ApplicationInfoManager bean

Spring Cloud - Eureka服务注册

RibbonEurekaAutoConfiguration

当启用Eureka client(eureka.client.enable为true和ribbon.eureka.enabled为true时, 默认为true)时配置默认基于eureka的ribbon.

使用 EurekaRibbonClientConfiguration 提供的配置: RibbonPing, ServerList, ServerIntrospector.

EurekaDiscoveryClientConfiguration

提供监听 RefreshScopeRefreshedEvent 的监听器, 当事件发生时注销并重新注册(防止metadata发生改变)

提供一个默认的EurekaHealthCheckHandler实例, 当bean不存在的且 eureka.client.healthcheck.enabled 为true时.

主要类

Spring Cloud - Eureka服务注册

ServiceRegistry

spring提供的服务实例注册和注销的接口.

EurekaServiceRegistry

ServiceRegistry的Eureka实现. 注册和注销的实现是通过 EurekaRegistrationApplicationInfoManager 修改实例状态实现的.

EurekaRegistration

通过实现 ServiceInstance 提供访问实例信息的接口,

ApplicationInfoManager

提供修改实例状态的接口, 并通知状态变化的监听器.

提供内部类 StatusChangeListener .

提供注册和注销状态变化监听器的接口, Eureka的 DiscoveryClient 中通过匿名类的方式实现了该接口, 当实例状态发生变化时, 刷新实例状态.

原文  http://atbug.com/spring-cloud-service-registry-via-eureka/
正文到此结束
Loading...