Spring Cloud源码分析之Eureka(一)

Spring Cloud源码分析之Eureka(一)

开场白

当项目ps://www.fons.com.cn/tag/%e6%8b%86%e5%88%86" target="_blank">拆分成多个微服务时,这个时候多个服务就需要进行管理,服务提供者把服务注册上去,其他消费者就可以进行调用了,当有新的服务注册上来,客户端会定时d 7 !拉去服务列表跟 本地存在的服务列表对比,进行服务列表的更新,当有服务下线,也会更新列表,服务提供者和消费者是动作的主要发起者,eureka注册中心是处理请求的接收者,可以先从eureka客户端作为入口研究,看看主动I p * 7 ^ N _ 4发起者是怎样和注册中心完成通信的。

源码分析

1、EnableDiscoveryCld W U bientImportSelector加载S ` r m 1 n q .启动类的所有元数据信息

Spring Cloud源码分析之Eureka(一)
2、加载所有jar自动配置类并5 V ? g U $去掉重复的类,然后就是类的自动装配
Spring Cloud源码分析之Eureka(一)
Spring Cloud源码分析之Eureka(一)
3、DiscoveryClient是EurekaClien的默认实现类M i j,这个类是单例,并且实现了EurekaClient和I 8 | o D m !Look8 ` | WupService
Spring Cloud源码分析之Eureka(一)
4、DiscoveryClient类里面有个定时任务初始化的方法,这个方法里面K n j k q @ .的逻辑还是比较复杂的,第一个是每隔30s定时获取最新的服务列表;第二个是每隔30s定时续约服务;. o ) E % f r第三个是首先周期注册服务,然后每隔30s定时刷新防踢,注册服务。
Spring Cloud源码分析之Eureka(一)
5、DiscoveryClient里N ? } k O ^ C面通过client调用远程服务进行服务续约,注册是同样的原理。

总结

一、eureka客户端做o ` L M A 2 e Q了下面几件事情:
1、定时获取服务最新列b j L ~
2、定时续约注册的服务2 8 0 w
3、注册服务到注册中
4、定时检查心跳,超过一定时间(90s),无心跳,剔除服务。
5、默认是开启了自我保护模式
6、一定时间间隔会清除无效节点
二、服务列表的获取
可以通过项目Y Z O 2 V ~ V 8 p配置的地址,方法服务列表,eureka.clie; g I l o t ? #nt.serviceUrI Q ) 9 y Gl.defaultZone:ur, x T e % dl
三、服务注e q F f ;
1、为了不注册服务到注册中心,可以设置:eureka.client.enabled:false,但是这样不会刷新本地配置。
2、为了不h 4 U J B } w注册服务到注册中心,可以设置:eureka.client.registerWif d y 5 &thEureka:false,刷新本地配置。
3、为了- j _ q # T不注册服务到注册中心,可以把服务名换成另M s X外一个,相当于是启动了另外一个应用。