![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SpringCloud
文章平均质量分 71
记录自己对SpringCloud相关的源码解析
指尖凉
生活明朗,万物可爱,人间值得,未来可期。
展开
-
Spring Cloud Eureka源码解析之自我保护机制( 八)
在开发环境时,我们经常可以在eureka页面上看到这么一句红色的话这就代表了触发了自我保护机制,eureka不会再剔除过期的服务。默认情况下,当EurekaServer在一定时间内(默认90秒)没有接收到某个客户端实例的心跳,EurekaServer将会下线该实例。但是当网络分区故障发生或网络偶尔抖动时,客户端与EurekaServer之间无法正常通信,此时不应该下线实例。Eureka通过“自我保护机制”来解决这个问题:当EurekaServer短时间内丢失过多客户端时,这个节点就会进入自我保护模式。原创 2021-10-15 15:51:29 · 292 阅读 · 0 评论 -
Spring Cloud Eureka源码解析之服务剔除(七)
上篇讲到的是服务正常下线的情况,如果遇到网络不稳定或机器宕机了,导致了server一直接收不到服务的心跳,这时就可以认为该服务实例故障了,需要剔除了。在EurekaServer启动流程一节初始化eureka server上下文中,有这样一行代码this.registry.openForTraffic(this.applicationInfoManager, registryCount);这行代码就会创建一个定时剔除过期服务的定时任务@Overridepublic void openForTraf原创 2021-10-15 15:51:01 · 236 阅读 · 0 评论 -
Spring Cloud Eureka源码解析之服务下线(六)
当Eureka Client 服务关闭停止时,会触发 DiscoveryClient的shutdown关闭eureka-client(正常关闭,非宕机等的非正常关闭)@PreDestroy@Overridepublic synchronized void shutdown() { if (isShutdown.compareAndSet(false, true)) { logger.info("Shutting down DiscoveryClient ...");原创 2021-10-15 15:50:12 · 220 阅读 · 0 评论 -
Spring Cloud Eureka源码解析之服务注册列表拉取(五)
在Eureka Client启动流程一文讲到Client刚启动时会全量拉取一次,后面会开启一个定时任务,根据条件以及本地缓存情况全量拉取或增量拉取private boolean fetchRegistry(boolean forceFullRegistryFetch) { Stopwatch tracer = FETCH_REGISTRY_TIMER.start(); try { // 如果增量被禁用或者是第一次获取(本地缓存为空),则全量获取 Appli原创 2021-10-15 15:49:45 · 644 阅读 · 0 评论 -
Spring Cloud Eureka源码解析之服务续约(四)
EurekaClientEureka Client启动时会创建一个每隔30s向Eureka Server发送心跳的定时任务如果续约的响应状态码是404,则需要重新去注册Eureka Server接收续约请求处理续约请求的是InstanceResource#renewLease方法@PUTpublic Response renewLease( @HeaderParam(PeerEurekaNode.HEADER_REPLICATION) String isReplication,原创 2021-10-15 15:49:19 · 116 阅读 · 0 评论 -
Spring Cloud Eureka源码解析之服务注册(三)
EurekaClient在Eureka Client启动流程一节的最后说到,instanceInfoReplicator.start(clientConfig.getInitialInstanceInfoReplicationIntervalSeconds());里有服务注册的逻辑,所以就从这里开始看public void start(int initialDelayMs) { // 将started设置为true,表示已启动了 if (started.compareAndSet(fa原创 2021-10-15 15:48:48 · 144 阅读 · 0 评论 -
Spring Cloud Eureka源码解析之Eureka Client启动流程(二)
看下EurekaClient的自动装配类EurekaClientAutoConfigurationEurekaClientConfigBean包含了eureka.client的配置@Bean@ConditionalOnMissingBean(value = EurekaClientConfig.class, search = SearchStrategy.CURRENT)public EurekaClientConfigBean eurekaClientConfigBean(Configurable原创 2021-10-15 15:48:20 · 186 阅读 · 0 评论 -
Spring Cloud Eureka源码解析之Eureka Server启动流程(一)
通过在启动类上添加@EnableEurekaServer注解启用EurekaServer@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(EurekaServerMarkerConfiguration.class)public @interface EnableEurekaServer {}该注解引入了一个配置类EurekaServerMarkerConfiguration@Con原创 2021-10-15 15:47:04 · 230 阅读 · 0 评论 -
Ribbon源码解析
代码示例@Bean@LoadBalancedRestTemplate restTemplate() { return new RestTemplate();}public String helloService(String name) { //用服务名替代了具体的url地址,在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名 return restTemplate.getForObject("http://eurek原创 2021-09-22 20:26:02 · 795 阅读 · 0 评论 -
Feign源码解析
代码示例启动类上添加@EnableFeignClients注解,表示开启feign功能原创 2021-09-22 17:25:02 · 2506 阅读 · 0 评论