Spring Cloud源码分析之Eureka(一)

Spring Cloud源码分析之Eureka(一)

开场白

当项目拆分成多个微服务时,这个时候多个服务就需要进行管理,服务提供者把服务注册上去,其他消费者就可以进行调用了,当有新的服务注册上来,客户端会定时拉去服务列表跟 本地存在的服务列表对比,进行服务列表的更新,当有服务下线,也会更新列表,服务提供者和消费者是动作的主要发起者,eureka注册中心是处理请求的接收者,可以先从eureka客户端作为入口研究,看看主动发起者是怎样和注册中心完成通信的。

源码分析

1、EnableDiscoveryClientImportSelector加载启动类的所有元数据信息
Spring Cloud源码分析之Eureka(一)
Spring Cloud源码分析之Eureka(一)
2、加载所有jar自动配置类并去掉重复的类,然后就是类的自动装配
Spring Cloud源码分析之Eureka(一)
Spring Cloud源码分析之Eureka(一)
3、DiscoveryClient是EurekaClien的默认实现类,这个类是单例,并且实现了EurekaClient和LookupService
Spring Cloud源码分析之Eureka(一)
4、DiscoveryClient类里面有个定时任务初始化的方法,这个方法里面的逻辑还是比较复杂的,第一个是每隔30s定时获取最新的服务列表;第二个是每隔30s定时续约服务;第三个是首先周期注册服务,然后每隔30s定时刷新防踢,注册服务。
Spring Cloud源码分析之Eureka(一)
5、DiscoveryClient里面通过client调用远程服务进行服务续约,注册是同样的原理。
Spring Cloud源码分析之Eureka(一)

总结

一、eureka客户端做了下面几件事情:
1、定时获取服务最新列表
2、定时续约注册的服务
3、注册服务到注册中
4、定时检查心跳,超过一定时间(90s),无心跳,剔除服务。
5、默认是开启了自我保护模式
6、一定时间间隔会清除无效节点
二、服务列表的获取
可以通过项目配置的地址,方法服务列表,eureka.client.serviceUrl.defaultZone:url
三、服务注册
1、为了不注册服务到注册中心,可以设置:eureka.client.enabled:false,但是这样不会刷新本地配置。
2、为了不注册服务到注册中心,可以设置:eureka.client.registerWithEureka:false,刷新本地配置。
3、为了不注册服务到注册中心,可以把服务名换成另外一个,相当于是启动了另外一个应用。

猜你喜欢

转载自blog.51cto.com/xxdeelon/2556257
今日推荐