spring cloud eureka server源码分析

前言

spring cloud eureka server作为一个服务注册发现中心,现在已经被Netflix抛弃,停止更新了,spring cloud的服务注册发现有很多更成熟的替代,因此这里对eureka server源码的分析,仅作学习用,学习一下成熟的开源依赖里的思想和模式。

源码分析

@EnableEurekaServer

@EnableEurekaServer是一个eureka server服务必须声明的注解,我们从这个注解入手,看看eureka server做了什么。
在这里插入图片描述
注解里基本没什么东西,只有一个@Import要注意一下,那么接下来看@Import导入的这个类。

EurekaServerMarkerConfiguration

在这里插入图片描述
这是一个有@Configuration注解的配置类,里面只有一个内部类的Bean,暂时不知道什么作用,先放着,@EnableEurekaServer注解看到这里也断了,究竟有什么用呢?

spring.factories

上面由于@EnableEurekaServer注解只涉及两个类,对源码的研究暂时断了,接下来我们从spring boot的spi机制入手,直接来看spring-cloud-netflix-eureka-server依赖包里的META-INF/spring.factories文件。
在这里插入图片描述
这里通过EnableAutoConfiguration属性的配置,导入了一个类org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration。接下来看看EurekaServerAutoConfiguration这个类。

EurekaServerAutoConfiguration

在这里插入图片描述
注意@ConditionalOnBean(EurekaServerMarkerConfiguration.Marker.class)这个注解,只有当EurekaServerMarkerConfiguration.Marker的Bean存在spring 容器时,才加载这个EurekaServerAutoConfiguration。原来@EnableEurekaServer注解对于eureka server的开关作用是这样用的。

EurekaServerAutoConfiguration这个类里面包含了大量的Bean注册,包括仪表盘DashBoard的controller的注册,其他Bean的注册。
最重要的下面两个Bean

在这里插入图片描述
jersey是一个restful的web服务框架,这里拦截了所有路径上的请求,并转发到@Path标注的相应的处理方法上。

还有一个上面重要的点@Import(EurekaServerInitializerConfiguration.class)
我们一起来看一下EurekaServerInitializerConfiguration类

EurekaServerInitializerConfiguration

在这里插入图片描述
这里实现了SmartLifecycle接口,会在spring容器启动后,自动调用start方法
在这里插入图片描述
看一下这个初始化方法。

在这里插入图片描述
在这里插入图片描述
由于不是aws,所以这个aws的绑定就不看了。这个syncUp方法,会往eureka集群同步eureka server注册中心的信息。EurekaMonitors.registerAllStats();注册所有监控
openForTraffic
在这里插入图片描述
会将自身的状态从starting设置为up,并同步到eureka集群上的所有节点。
postInit方法,会开启一个定时任务,剔除失效的注册。

总结

eureka的核心还是用Jersey构建的Restful的web服务,所有的服务的注册都是依靠这些web服务,例如服务注册com.netflix.eureka.resources.ApplicationResource#addInstance,服务移除com.netflix.eureka.resources.InstanceResource#cancelLease,都是调用这些接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值