摘要:
Zipkin基本概念 1. Span:基本工作单元,一次链路调用就会创建一个Span 2. Trace:一组Span的集合,表示一条调用链路。举个例子:当前存在服务A调用服务B然后调用服务C,这个A B C的链路就是一条Trace,而每个服务例如B就是一个Span,如果在服务B中另起2个线程分别调用 阅读全文
摘要:
相信我,你会收藏这篇文章的,本篇文章涉及Ribbon、Hystrix、Feign三个组件的源码解析 "Ribbon架构剖析" 这篇文章介绍了Ribbon的基础架构,也就是下图涉及到的6大组件: "Ribbon源码解析" 这篇文章以上篇文章为基础,详细介绍了Ribbon的代码执行流程:Ribbon的自 阅读全文
摘要:
在上篇文章 "Feign自动装配" 中,我们提到了Feign的自动装配的原理,以及Feign整合Ribbon和Hystrix的核心在类 中,那么本篇文章就来揭开这个类的神秘面纱 首先,我们看到这个类实现了 这个接口,这个接口的主要作用就是利用 来创建一些实例化过程比较复杂的bean,更多关于这个接口 阅读全文
摘要:
在上篇文章 "Hystrix工作流程解析" 中,我们整体介绍了Hystrix的工作流程,知道了Hystrix会在下面四种情况下发生降级: 1. 熔断器打开 2. 线程池/信号量跑满 3. 调用超时 4. 调用失败 本篇文章则介绍一下在发生降级时Hystrix的处理细节,下面的方法异常的处理逻辑: 这 阅读全文
摘要:
spring.factories 按照以往的惯例,在研究源码的时候,我们先看一下 文件下自动装配的类 ,其中比较重要的东西有这么几个 1. 属性 代表的是各个Feign客户端的配置类,这个稍后会再次提到 2. 这个bean看名字就知道,Feign的上下文环境,包含了所有feign客户端的配置 3. 阅读全文
摘要:
在深入研究熔断器之前,我们需要先看一下Hystrix的几个重要的默认配置,这几个配置在 中 这几个属性共同组成了熔断器的核心逻辑,即: 1. 每10秒的窗口期内,当请求次数超过20次,且出错比例超过50%,则触发熔断器打开 2. 当熔断器5秒后,会尝试放过去一部分流量进行试探 熔断器初始化 熔断器的 阅读全文
摘要:
在上篇文章 "Hystrix工作流程解析" 中,我们整体介绍了Hystrix的工作流程,知道了Hystrix会在下面四种情况下发生降级: 1. 熔断器打开 2. 线程池/信号量跑满 3. 调用超时 4. 调用失败 本篇文章则介绍一下在发生降级时Hystrix的处理细节,下面的方法异常的处理逻辑: 这 阅读全文
摘要:
搭建Hystrix源码阅读环境 引入依赖 创建 类 创建测试类 Hystrix工作流程 首先我们看一下上方的这张图,这个图完整的描述了Hystrix的工作流程: 1.每次调用都会创建一个HystrixCommand 2.执行execute或queue做同步\异步调用 3.判断熔断器是否打开,如果打开 阅读全文
摘要:
在上篇文章 "Ribbon架构剖析" 中,我们已经介绍了Ribbon的架构组成以及很多重要的对象,相信你已经对Ribbon已经有一个清晰的认识了。本篇文章则研究一下Ribbon的原理 首先我们知道,在普通项目中Ribbon的使用是这样的 这里面最引人瞩目的就是注解 了,看一下这个注解都是做了什么吧 阅读全文
摘要:
在学习Ribbon之前,先看一下这张图,这张图完美的把Ribbon的基础架构给描述出来了 这张图的核心是负载均衡管理器,围绕着它的是外面的这5大功能点,咱们就从核心开始看然后再带出来其他的功能 首先看一下负载均衡器的核心接口 这个接口中保护了一个基本的负载均衡器所必须的所有功能: 1. 向负载均衡器 阅读全文