Spring Cloud Netflix Eureka对eureka原生项目做了一点儿轻量级的封装。

下面通过几个Spring Cloud Netflix Eureka的核心注解来分析

  • @EnableEurekaClient 在Spring cloud Netflix eureka-client工程里
    这个注解会将当前spring boot应用作为eureka client进行启动。他的处理类是EurekaClientAutoConfiguration

    • EurekaClientConfigBean 这个是Spring自己实现EurekaClient接口搞的一个配置类,主要内容和原版Eureka的DefaultEurekaClientConfig作用是一样的,只不过提供了Spring方式的外部配置方式。
    • EurekaInstanceConfigBean 这个是Spring自己实现EurekaInstanceConfig接口搞的一个配置类,作用和原版差不多
    • EurekaServiceRegistry 是Spring自定义的服务注册中心,主要有注册、下线方法,这个类其实主要做心跳
    • EurekaAutoServiceRegistration 这个是Spring对原生Eureka 的一个优化,会在服务启动时马上执行服务注册(原版需要等待40秒)
    • CloudEurekaClient 继承了DiscoveryClient,主要是提供了一个onCacheRefreshed方法,这个拓展就是为了在EurekaClient拉取服务注册表时,更新一下Ribbon的ServerList。还有通过@Bean(destroyMethod = “shutdown”) 指定了Spring容器销毁时调用eureka client的服务下线方法进行下线
    • ApplicationInfoManager 服务信息管理器,原版组件,没啥好说的
    • EurekaRegistration 是ServiceInstance的子类,没啥特别的
    • EurekaHealthIndicator Spring自定义了Eureka的HealthIndicator,边缘代码,不用看了
  • @EnableEurekaServer 在Spring cloud Netflix eureka-server工程里

    • EurekaController 这是Spring根据原生eureka控制台的Controller写的控制器,因为Spring重写了控制台,所以也配套搞了个Controller,没啥可说的
    • InstanceRegistry我们的老朋友,原生的PeerAwareInstanceRegistryImpl的子类,主要是扩展了当发生注册、下线等等这些东西时,发布对应的Spring事件,算是Spring老生常谈的扩展方式了
    • RefreshablePeerEurekaNodes 继承了原生的PeerEurekaNodes,主要是对接了Spring的配置体系,当涉及到eureka server地址列表的配置变更时,就可以联动PeerEurekaNodes,搞在线扩容缩容了。
    • DefaultEurekaServerContext 老朋友,原生的,代表一个eureka服务器的上下文,里面包含了所有的组件资源
    • EurekaServerBootstrap 这个是Spring把原生的同名类代码拷贝了过来,由于使用了Spring的@Bean装配,这个类的代码享受到了依赖注入的好处,清爽了不少,但功能没变。还是启动eureka server

可以看到,Spring对eureka的扩展主要是对接Spring,都是一些胶水代码,没啥可说的。

Comments