Eureka源码解析
Eureka源码解析
sharedCode
拥有6年开发经验,目前担任某公司的架构师岗位。
展开
-
深入Eureka Server启动源码分析(一)
start包配置spring-cloud-netflix-eureka-server包结构在这个包下面META-INF下面有个spring.factories这个配置文件 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.cloud.netflix....原创 2018-06-14 15:37:58 · 7150 阅读 · 1 评论 -
深入 Eureka 服务注册 源码分析(二)
Eureka-Client注册服务啥时候会注册在两种情况下客户端会主动向服务端发送自己的注册信息1.当客户端的instance信息发生改变时,Eureka-Client和Server端信息不一致时2.当客户端刚刚启动的时候。定时器注册com.netflix.discovery.DiscoveryClient ,使用的@Inject //google guice 注入遵循 J...原创 2018-06-14 15:39:59 · 2770 阅读 · 3 评论 -
深入理解 Eureka 心跳续约(三)
Eureka-Client 发送心跳DiscoverClientcom.netflix.discovery.DiscoveryClient ,使用的@Inject //google guice 注入遵循 JSR-330规范 1@Inject 2DiscoveryClient(ApplicationInfoManagerapplicationInfoManager,EurekaC...原创 2018-06-21 09:49:37 · 5666 阅读 · 1 评论 -
深入理解Eureka 主动下线(四)
程序入口com.netflix.discovery.DiscoverClient 1@PreDestroy 2@Override 3publicsynchronizedvoidshutdown(){ 4if(isShutdown.compareAndSet(false,true)){ 5logger.info("ShuttingdownD...原创 2018-06-25 17:33:28 · 1761 阅读 · 0 评论 -
深入理解Eureka自我保护机制(五)
为什么要有自我保护机制众所周知,Eureka在CAP理论当中是属于AP , 也就说当产生网络分区时,Eureka保证系统的可用性,但不保证系统里面数据的一致性, 举个例子。当发生网络分区的时候,Eureka-Server和client端的通信被终止,server端收不到大部分的client的续约,这个时候,如果直接将没有收到心跳的client端自动剔除,那么会将可用的client端剔除,这不符...原创 2018-06-27 10:08:33 · 3416 阅读 · 0 评论 -
深入理解 Eureka实例自动过期(六)
初始化配置在Eureka-Server启动的时候,会启动一个定时任务,用来清理过期的客户端protected void initEurekaServerContext() throws Exception { // ....省略N多代码 // 服务刚刚启动的时候,去其他服务节点同步客户端的数量。 int registryCount = this.registry.syn...原创 2018-06-28 10:13:21 · 2338 阅读 · 0 评论 -
深入理解Eureka获取注册信息(七)
Eureka-Client获取信息启动获取在客户端应用启动时,初始化DiscoverClient的时候,会主动去获取一次注册信息@InjectDiscoveryClient(ApplicationInfoManager applicationInfoManager, EurekaClientConfig config, AbstractDiscoveryClientOptional...原创 2018-07-02 12:18:27 · 3535 阅读 · 1 评论 -
深入理解Eureka缓存机制(八)
Eureka Server缓存机制Eureka Server的缓存机制依赖于谷歌的gauva cache , 在Eureka中通过com.netflix.eureka.registry.ResponseCacheImpl , 这个操作类来实现缓存的机制。ResponseCacheImplResponseCacheImpl(EurekaServerConfig serverConf...原创 2018-07-03 10:00:36 · 5759 阅读 · 0 评论 -
深入理解Eureka覆盖状态(九)
应用场景在实际开发使用过程当中,在Eureka Admin控制台上,我们想强制下线某个服务 ,就需要用到覆盖状态的概念,其实说白了,就是在给实例存储另外一个状态,当续约,注册的时候,以这个覆盖状态为准 。覆盖状态设置覆盖状态程序入口: com.netflix.eureka.resources.InstanceResource@PUT@Path("status")pub...原创 2018-07-04 10:16:26 · 1197 阅读 · 0 评论 -
深入理解Eureka Server集群同步(十)
集群启动同步protected void initEurekaServerContext() throws Exception { // ....省略N多代码 // 同步信息 int registryCount = this.registry.syncUp(); // ....省略N多代码} void initEurekaServerContext() ...原创 2018-07-05 10:03:23 · 5679 阅读 · 0 评论 -
深入理解Eureka Server状态计算规则(十一)
简要在深入理解Eureka Server覆盖状态(九)这一篇文章中,我们介绍了Eureka Server的覆盖状态,但是覆盖状态设置了之后Eureka在使用的时候都会通过getOverriddenInstanceStatus()这个方法来计算实例的最终状态,那么他计算的规则是什么呢,本篇文章主要讲的就是这个。代码回顾在注册的时候,计算实例的最终状态的代码如下,public ...原创 2018-07-06 11:03:42 · 1642 阅读 · 0 评论 -
深入理解lastDirtyTimestamp(十二)
简介lastDirtyTimestamp在Eureka中承载了比较重要的作用,在续约,设置覆盖状态,删除覆盖状态的时候都有用到。定义: 实例的最后修改时间Eureka ClientEurekaClient在系统启动的时候,会启动一个定时任务,每40秒执行一次,该定时任务负责比对客户端的信息,如果发生改变则更新lastDirtyTimestamp的值,同时对Eureka Se...原创 2018-07-09 10:29:30 · 2091 阅读 · 0 评论 -
Erueka状态变更说明(十三)
状态说明STARTING : 表示服务正在启动中DOWN: 表示服务已经宕机,无法继续提供服务UP : 服务正常运行OUT_OF_SERVICE : 不再提供服务,其他的Eureka Client将调用不到该服务,一般有人为的调用接口设置的,如:强制下线。UNKNOWN: 未知状态状态变更容器启动在容器刚刚启动,实例化instance信息的时候,默认状态为START...原创 2018-07-10 10:14:16 · 1563 阅读 · 0 评论 -
Eureka强制下线
Eureka强制下线强制下线可以通过调用stateUpdate接口,更改实例的状态为OUT_OF_SERVICE 。实现方式调用接口:/eureka/apps/appID/instanceID/status?value=OUT_OF_SERVICE调用示例:http://101.37.33.252:8083/eureka/apps/EUREKA-1/10.28.144.1...原创 2018-07-11 10:18:12 · 6944 阅读 · 0 评论 -
Eureka Server集群重启问题追踪
问题在生产环境重启Eureka Server集群的时候,发现订单客户端调用分布式Id生成服务出错,Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: IDGfor client: IDG显示订单服务调不到IDG服务了问题...原创 2018-07-12 08:18:21 · 3156 阅读 · 2 评论 -
Eureka Client监听启动状态
在Eureka Client 端,通过@PostConstruct注解去做一些初始化工作,有时候会涉及到调用其他微服务,这个时候,由于Eureka Client尚未启动完成,注册信息还没有从Eureka Server上拉取下来,因此ribbon是获取不到client信息的,在使用Fegin调用的过程中,如果开启了熔断器,那么,服务调用会快速失败feign: hystrix:...原创 2018-07-16 10:13:40 · 3207 阅读 · 0 评论 -
Eureka常见问题解答
什么情况下会开启自我保护机制?前提说明Eureka Server 内部维护了两个变量 :expectedNumberOfRenewsPerMin :每分钟最大的续约数量,由于客户端是每30秒续约一次,一分钟就是续约2次, count代表的是客户端数量所以这个变量的计算公式 : 客户端数量*2 numberOfRenewsPerMinThreshold : 每分钟最小续约数...原创 2018-07-18 10:05:57 · 2690 阅读 · 0 评论 -
Eureka控制台参数说明
Home进入Eureka控制台首页,首先看HOME页的头部System StatusEnvironment : 环境,默认为test, 该参数在实际使用过程中,可以不用更改Data center : 数据中心,使用的是默认的是 “MyOwn”Current time:当前的系统时间Uptime : 已经运行了多少时间Lease expiration enabled :是...原创 2018-07-19 10:16:11 · 11646 阅读 · 0 评论 -
Eureka知识总结
Eureka工作流程图注册 Eureka在应用启动时,会在EurekaAutoServiceRegistration这个类初始化的时候,主动去Eureka Server端注册。 Eureka在启动完成之后会启动一个40秒执行一次的定时任务,该任务会去监测自身的 IP信息以及自身的配置信息是否发生改变,如果发生改变,则会重新发起注册,详情可见:深入理解lastDirty...原创 2018-07-20 10:18:46 · 917 阅读 · 0 评论