Eureka源码分析
1 Eureka Server启动过程
springboot应⽤启动时会加载EurekaServerAutoConfiguration⾃动配置类,
先看头配置,如何注入Marker对象,在启动类中要有EnableEurekaServer注解
接下来关注核心配置类EurekaServerAutoConfifiguration
在 com.netflflix.eureka.cluster.PeerEurekaNodes#start⽅法中,
那么,在什么时间点调用PeerEurekaNodes#start,回到主配置类
注入 DefaultEurekaServerContext上下文对象,
回到主配置类中,
关注头配置EurekaServerInitializerConfiguration
重点关注,进⼊
org.springframework.cloud.netflflix.eureka.server.EurekaServerBootstrap#contextInitialized
关注上图中的syncUp方法
继续关注com.netflflix.eureka.registry.AbstractInstanceRegistry#register(提供实例注册功能)
继续关注com.netflflix.eureka.registry.PeerAwareInstanceRegistryImpl#openForTraffic
2 Eureka Server服务接⼝暴露
扫描EUREKA_PACKAGES指定包
对外提供的接⼝服务,在Jersey中叫做资源
使⽤Jersey发布的供Eureka Client调⽤的Restful⻛格服务接⼝(完成服务注册、⼼跳续约等接口)
3 Eureka Server接收客户端注册请求
AbstractInstanceRegistry#register():注册,实例信息存储到注册表是⼀个ConcurrentHashMap
4 Eureka Server接收客户端心跳请求
renew()⽅法中—>leaseToRenew.renew()—>对最后更新时间戳进⾏更新
5 Eureka Client注册服务
读取配置文件信息
创建EurekaClient实例信息,从server获取服务实例信息
6 Eureka Client下架服务
服务关闭时,会调用EurekaClient的shutdown方法