Spring Cloud Netflix
Spring Cloud Netflix
犬豪
行我所行,无问西东
展开
-
Spring Cloud 常见面试题总结(二)
Part4【Q-01】Eureka Client 提交的 CANCEL_OVERRIDE 状态修改请求,Eureka Server 是如何处理的,Server 端都做了哪些变更?请谈一下你的认识。【RA】Eureka Client 提交的 CANCEL_OVERRIDE 状态修改请求,Eureka Server 在接收到后,首先根据该 Client 的微服务名称及 instanceId 在 Server 端注册表中进行了查找。若没有找到,则直接返回 404;若找到了,其会执行两大任务:任务一:将 S原创 2020-10-22 14:23:15 · 352 阅读 · 0 评论 -
Spring Cloud 常见面试题总结(一)
Part1【Q-01】你曾阅读过 Spring Cloud 的源码吗?我们知道,Spring Cloud 是通过 Spring Boot 集成了很多第三方框架构成的。现在准备解析 Spring Cloud 中某子框架的源码,若还没有找到合适的入手位置,那么从哪里开始解析可能是一个不错的选择?【RA】我自己曾阅读过 Spring Cloud 中的 Eureka、OpenFeign、Ribbon 等的源码。对于一个未曾阅读过的子框架源码,我认为从自动配置类开始解析可能是一个不错的选择。 我们知道 Spr原创 2020-10-22 12:26:07 · 440 阅读 · 0 评论 -
Spring Cloud OpenFeign 源码解析(三)Feign Client 远程调用、负载均衡算法
远程调用上面分析我们知道生成的feignclient是通过jdk动态代理生成的代理对象,所以入口就是jdk动态代理的InvocationHandler:跟进去,看具体的InvocationHandler的实现://feign.InvocationHandlerFactory.Default.javastatic final class Default implements InvocationHandlerFactory { @Override public InvocationHandl原创 2020-10-21 21:31:23 · 919 阅读 · 0 评论 -
Spring Cloud OpenFeign 源码解析(二)Feign Client 的创建
Feign Client 的创建1. 入口 FeignClientsRegistrar入口:FeignClientsRegistrar其实现了一个很重要的接口ImportBeanDefinitionRegistrar:这个接口专门配合@Import注解、Configuration类使用的可以获取到@Import注解所在的配置类的类元数据信息,然后根据导入的类元数据,按需注册Bean Definition:2. 完成配置注册我们看FeignClientsRegistrar对regist原创 2020-10-20 23:09:38 · 631 阅读 · 1 评论 -
Spring Cloud OpenFeign 源码解析(一)重要类与接口解析
重要类与接口解析1. @EnableFeignClients该注解中一共有5个属性:我们依次看,这些属性流程分析的时候都会用到:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)public @interface EnableFeignClients { /** * Alias for the {@link #base原创 2020-10-20 16:18:05 · 624 阅读 · 1 评论 -
Spring Cloud Eureka Server 源码解析(八) 统计最后一分钟收到的续约心跳数、定时清除过期 Client
定时清除过期 Client定时任务入口EurekaServerAutoConfiguration://EurekaServerInitializerConfiguration.javapublic void start() { new Thread(() -> { try { // TODO: is this class even needed now? //其他内容就不看了,直接找到这个定时清除过期client的任务 //看contextInitialized方法原创 2020-10-20 13:22:12 · 450 阅读 · 4 评论 -
Spring Cloud Eureka Server 源码解析(七)处理客户端增量下载请求、读写锁问题
处理客户端增量下载请求1. 定义缓存key入口ApplicationsResource://ApplicationsResource.java@Path("delta")@GETpublic Response getContainerDifferential( @PathParam("version") String version, @HeaderParam(HEADER_ACCEPT) String acceptHeader, @HeaderP原创 2020-10-19 17:41:53 · 286 阅读 · 0 评论 -
Spring Cloud Eureka Server 源码解析(六)处理客户端全量下载请求
处理客户端全量下载请求1. 检查服务器是否允许访问注册表入口ApplicationsResource,getContainers方法://ApplicationsResource.java@GETpublic Response getContainers(@PathParam("version") String version, @HeaderParam(HEADER_ACCEPT) String acceptHeader,原创 2020-10-19 15:19:30 · 334 阅读 · 1 评论 -
Spring Cloud Eureka Server 源码解析(五)处理客户端下架请求
1. 处理客户端下架请求入口InstanceResource://InstanceResource.java@DELETE //下架是Delete请求public Response cancelLease( @HeaderParam(PeerEurekaNode.HEADER_REPLICATION) String isReplication) { try { //入参:isReplication是否是Server间复制同步请求 boolean is原创 2020-10-18 17:16:12 · 168 阅读 · 0 评论 -
Spring Cloud Eureka Server 源码解析(四)处理客户端续约请求
1. 处理客户端续约请求1.1 入口入口InstanceResource://InstanceResource.java@PUT //是个PUT修改请求public Response renewLease( @HeaderParam(PeerEurekaNode.HEADER_REPLICATION) String isReplication, @QueryParam("overriddenstatus") String overriddenStatus,原创 2020-10-18 16:56:58 · 344 阅读 · 0 评论 -
Spring Cloud Eureka Server 源码解析(三)处理客户端注册请求
1. 处理客户端注册请求回想一下客户端发起注册请求,有几种场景:启动初始化的时候直接注册(需要配置文件配置)发起续约心跳请求时收到服务端404响应时,会进行注册当client检测到配置更新的时候,通过注册请求向服务端同步数据即注册请求,除了具有注册功能外,也是客户端向服务端进行数据同步的请求。Server端处理客户端注册请求的处理器是ApplicationResource://ApplicationResource.java/** * Registers information原创 2020-10-18 15:14:43 · 383 阅读 · 0 评论 -
Spring Cloud Eureka Server 源码解析(二)处理客户端删除状态请求
1. 处理客户端删除状态请求一但客户端发起了删除状态请求,服务端就不在接受来自该客户端的心跳请求。(讲续约心跳的时候就能看到了)回到处理器InstanceResource,看deleteStatusUpdate方法://InstanceResource.java@DELETE@Path("status")public Response deleteStatusUpdate( @HeaderParam(PeerEurekaNode.HEADER_REPLICATION) Stri原创 2020-10-17 17:34:06 · 283 阅读 · 0 评论 -
Spring Cloud Eureka Server 源码解析(一)自动配置分析、处理客户端状态修改请求
Eureka Server 源码解析1. 自动配置分析1.1 入口入口从starter开始:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>看到pom中引入了如下依赖:1.原创 2020-10-17 17:05:23 · 427 阅读 · 0 评论 -
Spring Cloud Eureka Client 源码解析(四)微服务下架、Instance 状态修改
1. 微服务下架微服务下架指的就是应用关闭。现在看一下应用关闭的时候,Eureka Client做了什么。重新返回到 EurekaClientAutoConfiguration 自动配置类:一旦应用被关闭,销毁bean的时候就会触发destoryMethod指定的方法(Sping框架知识点自行补课哈):当然销毁bean的原因也不是只有关闭应用,看到上图中EurekaClient的Bean加了@RefreshScope注解,容器刷新的时候会销毁该实例然后重新生成。//DiscoveryClie原创 2020-10-17 14:13:28 · 394 阅读 · 0 评论 -
Spring Cloud Eureka Client 源码解析(三)初始化定时任务
上一章分析了客户端获取注册表、注册的逻辑,本章继续分析客户端相关的三个定时任务。初始化定时任务回顾一下上一章DiscoveryClient的构造:initScheduledTasks方法中可以看到有三个定时任务://DiscoveryClient.java/** * Initializes all scheduled tasks. */private void initScheduledTasks() { if (clientConfig.shouldFetchRegistry(.原创 2020-10-17 13:07:36 · 624 阅读 · 2 评论 -
Spring Cloud Eureka Client 源码解析(二)获取注册表、客户端注册
Eureka Client 源码解析 获取注册表、客户端注册1. EurekaClient 构造器中的流程:接下来我们准备开始真正分析Eureka Client 的源码,上一章我们分析了Eureka Client的自动配置类都加载了哪些东西,其中最为核心的就是EurekaClient:先简单看一下CloudEurekaClient构造器中的流程,大概看一下都做了哪些事,接下来我们会一一分析:2. EurekaClient 构造器跟踪入口:跟CloudEurekaClient的构造://C原创 2020-10-15 17:01:55 · 671 阅读 · 0 评论 -
Spring Cloud Eureka Client 源码解析(一)预备知识、自动配置类的加载解析
1.预备知识1.1 Region 与 Zone1.1.1 概念Eureka 中具有 Region 与 Availability Zone(简称 AZ)概念,是云计算中的概念。为了方便不同地理区域中用户的使用,大型云服务提供商一般会根据用户需求量在不同的城市、省份、国家或洲创建不同的大型云计算机房。这些不同区域机房间一般是不能“内网连通”的。这些区域就称为一个 Region。这里存在一个问题:同一 Region 机房是如何实现同域容灾的?为了增强容灾能力,在一个 Region 中又设置了不同的 A原创 2020-10-15 15:32:52 · 358 阅读 · 1 评论 -
Spring Cloud 快速入门(八)消息系统整合框架 Spring Cloud Stream
1. 简介1.1 官网【原文】A lightweight event-driven microservices framework to quickly build applications that can connect to external systems. Simple declarative(声名式的) model to send and receive messages using Apache Kafka or RabbitMQ between Spring Boot apps.【翻原创 2020-10-14 18:24:36 · 1740 阅读 · 0 评论 -
Spring Cloud 快速入门(七)调用链跟踪 Spring Cloud Sleuth + Zipkin
调用链跟踪 Spring Cloud Sleuth + zipkin调用链跟踪产品:Google—Dapper淘宝-鹰眼-Eagleeye京东-Hydra大众点评-cat新浪-watchman唯品会-microscopeTwitter-Zipkin1. Sleuth 简介打开官网就可以看到对 Sleuth 的一个简单功能介绍。【翻译】(Spring Cloud Sleuth可以实现)针对Spring Cloud应用程序的分布式跟踪,兼容Zipkin、HTrace 和基于日志的(如原创 2020-10-14 17:41:02 · 1157 阅读 · 0 评论 -
Spring Cloud 快速入门(六)分布式配置管理Spring Cloud Config 和 消息总线Spring Cloud Bus
集群中每一台主机的配置文件都是相同的,对配置文件的更新维护就成为了一个棘手的问题,Spring Cloud Config 是负责 Spring Cloud 中配置文件维护管理的配置中心。1. spring cloud config 概述1.1 官网介绍【原文】Spring Cloud Config provides server and client-side support for externalized configuration in a distributed system. With t原创 2020-10-14 16:38:57 · 316 阅读 · 0 评论 -
Spring Cloud 快速入门(五)微服务网关Zuul
1. 简介1.1 网关简介网关是系统唯一对外的入口,介于客户端与服务器端之间,用于对请求进行鉴权、限流、路由、监控等功能。1.2 Zuul 官网简介【原文】Zuul is the front door for all requests from devices and web sites(设备和 web 站点)to the backend of the Netflix streaming application(Netflix 流应用后端). As an edge service applicat原创 2020-10-13 21:32:07 · 405 阅读 · 1 评论 -
Spring Cloud 快速入门(四)Hystrix Dashboard 监控仪表盘、Turbine 聚合监控、服务降级报警机制
1. Dashboard 监控仪表盘Hystrix Dashboard 仪表盘用于以 GUI 的形式展示消费者的执行情况,包括其处理器方法与 Service 方法的调用执行情况,及熔断器 CircuitBreaker 的状态等。当然,这些显示出的数据都是在指定时间窗内的执行情况及状态信息。总步骤添加 hystrix-dashboard 与 actuator 依赖配置文件中开启 actuator 的 hystrix.stream 监控终端在启动类上添加@EnableHystrixDashboar原创 2020-10-13 13:19:08 · 1613 阅读 · 1 评论 -
Spring Cloud 快速入门(四)Hystrix 服务熔断 、服务降级、执行隔离
1. 前置概念1.1 服务熔断(1) 雪崩效应在复杂的系统中,经常会出现 A 依赖于 B,B 依赖于 C,C 依赖于 D,……这种依赖将会产生很长的调用链路,这种复杂的调用链路称为 1->N 的扇出。如果在 A 的调用链路上某一个或几个被调用的子服务不可用或延迟较高,则会导致调用A 服务的请求被堵住。如下图,D’’’‘出问题,导致C’'出问题,导致B’出问题,导致A出问题:堵住的 A 请求会消耗占用系统的线程、IO 等资源,当对 A 服务的请求越来越多,占用的计算机资源越来越多的时候,原创 2020-10-12 19:02:22 · 438 阅读 · 0 评论 -
Spring Cloud 快速入门(三)OpenFeign 与 Ribbon
1. 概述1.1 OpenFeign 简介(1) 官网简介【翻译】声明式 REST 客户端:Feign 通过使用 JAX-RS(Java Api eXtensions for RESTful Web Services,简单来说,就是一种使用注解来实现 RESTful 的技术)或 SpringMVC 注解的装饰方式,生成接口的动态实现。(2) 综合说明Feign,假装,伪装。OpenFeign可以将提供者提供的Restful服务伪装为接口进行消费,消费者只需使用“feign接口 + 注解”的方式原创 2020-10-12 12:44:25 · 738 阅读 · 0 评论 -
Spring Cloud 快速入门(二)微服务中心Eureka
1. Eureka 概述1.1 Eureka 简介Eureka 是 Netflix 开发的服务发现框架,本身是一个基于 REST 的服务,主要用于定位运行在 AWS(Amazon Web Services,亚马逊网络服务,亚马逊云)域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,实现 SpringCloud 的服务发现功能。其实,Eureka 就是一个专门用于服务发现的服务器,一些服务注册到该服务器,而另一原创 2020-10-11 18:56:09 · 357 阅读 · 0 评论 -
Spring Cloud 快速入门(一)简介、与Dubbo对比、创建基础工程
1. Spring Cloud 简介1.1 简介我们从多个角度看什么是Spring Cloud:1.1.1 官网简介打开 Spring 官网 http://spring.io 首页的中部,可以看到 Spring Cloud 的简介。【原文】Building distributed systems doesn’t need to be complex and error-prone(易错). Spring Cloud offers a simple and accessible(易接受的) pro原创 2020-10-11 15:15:50 · 760 阅读 · 0 评论