首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
SpringCloud系列专栏
bojiangzhou
创建于2021-05-10
订阅专栏
从源码层面学习研究SpringCloud组件,如 Eureka、Ribbon、Feign、Hystrix等,掌握其底层原理,学习其架构设计思想。
等 88 人订阅
共19篇文章
创建于2021-05-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
SpringCloud 源码系列(19)— 熔断器Hystrix 之 与Feign整合&总结篇
从源码层面分析Hystrix与Feign、RestTemplate的整合,以及Hystrix相关配置、原理的总结。
SpringCloud 源码系列(18)— 熔断器Hystrix 之 执行核心原理
Hystrix熔断器的核心执行原理,介绍了Hystrix线程池隔离技术的底层实现,以及断路器的工作原理。
SpringCloud 源码系列(17)— 熔断器Hystrix 之 获取执行订阅对象Observable
这一章我们从 HystrixCommand 的构造以及 execute() 执行为入口,一步步分析下 Hystrix 如何封装业务逻辑、线程池隔离模式、熔断降级的核心原理。 需要注意的是,Hystrix 源码大量使用了 rxjava 响应式编程,源码中充斥着大量的回调,以及 O…
SpringCloud 源码系列(16)— 熔断器Hystrix 之 基础入门篇
在分布式系统中,服务与服务之间的依赖错综复杂,某些服务出现故障,可能导致依赖于它们的其他服务出现级联阻塞故障。 例如下图,某个请求要调用 Service-A,Service-A 又要调用 Service-B、Service-D,Service-B 又要再调用 Service-C…
SpringCloud 源码系列(15)— 服务调用Feign 之 结合Ribbon进行负载均衡请求
前一篇文章已经分析出,最终在 Feign.Builder 的 build() 方法构建了 ReflectiveFeign,然后利用 ReflectiveFeign 的 newInstance 方法创建了动态代理。这个动态代理的代理对象是 ReflectiveFeign.Feig…
SpringCloud 源码系列(14)— 服务调用Feign 之 构建@FeignClient接口动态代理
从前文中已经分析出 FeignClientFactoryBean 这个组件就是生成 FeignClient 接口动态代理的组件。 FeignClientFactoryBean 实现了 FactoryBean 接口,当一个Bean实现了 FactoryBean 接口后,Sprin…
SpringCloud 源码系列(13)— 服务调用Feign 之 扫描@FeignClient注解接口
Feign 是一个伪 Java HTTP 客户端,Feign 不做任何的请求处理,它只是简化API调用的开发,开发人员只需定义客户端接口,按照 springmvc 的风格开发声明式接口。然后在使用过程中我们只需要依赖注入Bean,然后调用对应的方法传递参数即可。 这里就有个问题…
SpringCloud 源码系列(12)— 服务调用Feign 之 基础使用篇
在使用 Spring Cloud 开发微服务应用时,各个服务提供者都是以HTTP接口的形式对外提供服务,因此在服务消费者调用服务提供者时,底层通过 HTTP Client 的方式访问。我们可以使用JDK原生的 URLConnection、Apache的 HttpClient、O…
SpringCloud 源码系列(11)— 负载均衡Ribbon 之 重试与总结篇
通过前面几篇文章的分析,可以知道有重试功能的其实有两个组件,一个是 Ribbon 的 LoadBalancerCommand,一个是 spring-retry 的 RetryTemplate。RetryableRibbonLoadBalancingHttpClient 和 Re…
SpringCloud 源码系列(10)— 负载均衡Ribbon 之 HTTP客户端组件
首先简单了解下常用的 Java HTTP 组件库,Ribbon 中通过不同的配置便可以启用某个 HTTP 组件来进行服务间的通信。 HttpURLConnection 发起 HTTP 请求最大的优点是不需要引入额外的依赖,但是 HttpURLConnection 封装层次太低,…
SpringCloud 源码系列(9)— 负载均衡Ribbon 之 核心组件与配置
前面已经了解到 Ribbon 核心接口以及默认实现如何协作来查找要调用的一个实例,这节再来看下各个核心接口的一些特性及其它实现类。 IClientConfig 就是管理客户端配置的核心接口,它的默认实现类是 DefaultClientConfigImpl。可以看到在创建 ICl…
SpringCloud 源码系列(8)— 负载均衡Ribbon 之 核心原理
从上一篇 RestTemplate 负载均衡的原理中了解到,使 RestTemplate 具备负载均衡的能力,最重要的一个组件之一就是负载均衡器 ILoadBalancer,因为要用它来获取能调用的 Server,有了 Server 才能对原始带有服务名的 URI 进行重构。这…
SpringCloud 源码系列(7)— 负载均衡Ribbon 之 RestTemplate
在研究 eureka 源码中,我们在 demo-consumer 消费者服务中定义了用 @LoadBalanced 标记的 RestTemplate,然后使用 RestTemplate 通过服务名的形式来调用远程服务 demo-producer,然后请求会轮询到两个 demo-…
SpringCloud 源码系列(6)— 注册中心Eureka 之 总结篇
到这里,对 Eureka 核心源码的研究就差不多了,这节先来看下 Spring cloud eureka。Spring cloud eureka 提供了服务端的依赖 spring-cloud-starter-netflix-eureka-server 和客户端的依赖 sprin…
SpringCloud 源码系列(5)— 注册中心Eureka 之 EurekaServer集群
在实际的生产环境中,可能有几十个或者几百个的微服务实例,Eureka Server 承担了非常高的负载,而且为了保证注册中心高可用,一般都要部署成集群的,下面就来看看 eureka server 的集群。 首先来搭建一个三个节点的 eureka-server 集群,看看效果。 …
SpringCloud 源码系列(4)— 注册中心Eureka 之 服务下线、故障、自我保护机制
eureka client 服务关闭停止时,会触发 DiscoveryClient 的 shutdown 关闭 eureka-client,我们就从 shutdown 方法来看看 eureka-client 的下线。 然后关闭了一系列的调度任务,停止与 eureka-serve…
SpringCloud 源码系列(3)— 注册中心Eureka 之 抓取注册表
客户端启动初始化 DiscoveryClient 时,其中有段代码如下:这一步调用 fetchRegistry 就是在启动时全量抓取注册表缓存到本地中。 进入 fetchRegistry 方法,可以看到,首先获取本地的 Applications,如果为空就会调用 getAndS…
SpringCloud 源码系列(2)— 注册中心Eureka 之 服务注册、续约
服务注册的代码位置不容易发现,我们看 DiscoveryClient 初始化调度任务的这个方法,这段代码会去初始化一个实例信息复制器 InstanceInfoReplicator,这个复制器就包含了实例的注册(明明是注册却叫 Replicator 感觉怪怪的)。 先基于 Dis…
SpringCloud 源码系列(1)— 注册中心Eureka 之 启动初始化
Eureka 是 Netflix 公司开源的一个服务注册与发现的组件,和其他 Netflix 公司的服务组件(例如负载均衡、熔断器、网关等)一起,被 Spring Cloud 整合为 Spring Cloud Netflix 模块。不过 Eureka 2.0 开始闭源了,但 1…