java
文章平均质量分 71
今天你学习了吗吗
这个作者很懒,什么都没留下…
展开
-
spring cloud:eureka源码之我见(十)eureka server集群机制
一、注册表同步及高可用 eureka server集群之间数据同步以及高可用都是通过这个机制实现的,现在我们来剖析一下这个机制的原理。 (1)我们知道,eureka server的初始化是在eureka-core的EurekaBootStrap中完成的,在其中完成了PeerEurekaNodes的初始化。且在接下来的代码中会调用PeerEurekaNodes的start方法。在该方法中,eureka server会解析配置文件中其他eureka server的url,并且基于url地址构造PeerEur原创 2021-08-12 23:30:08 · 225 阅读 · 0 评论 -
spring cloud:eureka源码之我见(九)自我保护机制
假如说,20个服务实例,结果在1分钟之内ASD,只有8个服务实例原创 2021-08-03 21:11:13 · 155 阅读 · 0 评论 -
spring cloud:eureka源码之我见(八)服务实例故障自动感知与服务实例自动摘除机制
很多时候,服务实例并不是主动放delete请求下线的,而是宕机或者其他情况,并不会去通知注册中心(eureka server)。 eureka server是靠着心跳(续约)实现服务实例故障的自动感知以及服务实例自动摘除机制。 eureka server在EurekaBootStrap中启动初始化的时候,执行了一行代码registry.openForTraffic(applicationInfoManager, registryCount); 这个方法的最后一行,调用了父类的postInit()方法原创 2021-07-23 23:01:34 · 299 阅读 · 0 评论 -
spring cloud:eureka源码之我见(七)服务下线
Eureka中服务下线有几种方式 (1)直接停止服务 停止服务后,注册中心(eureka server)在一定时间内没有收到续约请求,则会将服务实例从服务列表中移出 (2)在Eureka客户端中调用下线请求 // 客户端可以通过如下代码主动通知注册中心下线 DiscoveryManager.getInstance().shutdownComponent(); (3)直接向注册中心发送下线请求 通过注册中心的接口,我们可以强制下线指定的服务,发送delete请求,可以让服务实例下线。 在e原创 2021-07-23 22:32:09 · 338 阅读 · 0 评论 -
spring cloud:eureka源码之我见(六)服务续约(心跳)
eureka client每隔一定的时间,会给eureka server发送心跳,保持心跳,从而让eureka server感知到自己的存活。 eureka client服务续约流程: (1)服务续约流程肯定是在eureka client初始化的时候开始执行,这样才能保证eureka server正常感知到服务存活。在DiscoveryClient(eureka client)初始化的时候,会去调度一堆定时任务,其中一个就是HeartbeatThread,心跳线程。 (2)在HeartbeatT.原创 2021-07-23 21:48:59 · 123 阅读 · 0 评论 -
spring cloud:eureka源码之我见(五)抓取注册信息
eureka client在第一次启动的时候,必须从eureka server端一次性抓取全量注册信息,在本地进行缓存,然后每隔30s从eureka server抓取增量的注册信息,跟本地缓存进行合并。 一、全量抓取注册信息 1. 抓取注册表的逻辑位于eureka client的实现类DiscoveryClient的构造中。 如果配置了需要抓取注册信息,那么eureka client就会在启动的时候启动一次抓取全量注册信息流程。 (1)eureka client初始化的时候,就会自动全量抓取注册信.原创 2021-07-23 15:44:43 · 268 阅读 · 0 评论 -
spring cloud:eureka源码之我见(四)服务注册源码剖析
服务注册源码剖析 一、Eureka client端的服务注册 Eureka client的服务注册流程代码位于eureka client包下的InstanceInfoReplicator类中。还记得之前的Eureka server初始化流程和Eureka client初始化流程中都实例化了一个DiscoveryClient类吗?在他的构造方法中,有一行代码 initScheduledTasks(); 这行代码内部就隐藏着eureka client的注册。 (1)在InstanceInfoRe.原创 2021-07-23 13:35:00 · 237 阅读 · 0 评论 -
spring cloud:eureka源码之我见(三)eureka client启动
eureka client启动源码剖析 在eureka源码的eureka-example包下,有一个ExampleEurekaClient类,就是一个eureka client启动的例子。 如果是一个Eureka服务,一定会有一个Eureka client,服务实例启动的时候,一定会启动Eureka client,Eureka client去向Eureka server注册。 (1)读取eureka-client.properties配置文件,形成一个服务实例的配置类MyDataCenterInsta原创 2021-07-16 22:45:35 · 145 阅读 · 0 评论 -
spring cloud:eureka源码之我见(二)基于Eureka server的启动源码剖析
基于Eureka server的启动源码剖析 eureka server的启动相当于是注册中心的启动,而eureka client的启动相当于是服务的启动。eureka server的启动是依赖于eureka client的启动的,因为eureka server本质上也是一个eureka client。在eureka server使用集群模式部署的时候,eureka server会将自己作为一个eureka client向其他的eureka server去注册。 eureka server本质就是一个w原创 2021-07-16 21:58:47 · 82 阅读 · 0 评论 -
spring cloud:eureka源码之我见(一)eureka源码结构
netflix eureka源码的目录结构如图所示: (1)eureka-client:eureka的客户端,注册到eureka上的一个服务,就是一个eureka client。无论是你要注册,还是要发现别的服务,无论是服务提供者还是服务消费者,都是一个eureka client客户端。 (2)eureka-core:这个就是eureka的服务端,其实就是eureka 的注册中心。 (3)eureka-resources:这个是基于jsp开发的eureka控制台,web页面。 (4)eureka原创 2021-07-15 21:54:37 · 106 阅读 · 0 评论