HystrixCommand是hystrix执行命令的具体实现,实现流程如下:

1.调用HystrixCommandExecutionHook的onStart方法

3.调用HystrixRequestLog记录执行命令。

3.通过HystrixCircuitBreaker检查命令是否熔断。

  3.1 如果熔断

    2.1.1执行getFallback回调函数。

  3.2 如果没有熔断

    3.2.1 调用HystrixCommandMetrics的markCommandStart的方法,调用HystrixThreadPool的markThreadExecution方法。

    3.2.2 调用HystrixCommandExecutionHook的onThreadStart、onRunStart、onExecutionStart方法

    3.2.3 执行run方法,

    3.2.4如果执行成功,

      3.2.4.1调用HystrixCommandExecutionHook的onExecutionSuccess方法。

      3.2.4.2调用HystrixThreadPool的markThreadCompletion方法,调用HystrixCommandMetrics的onThreadComplete的方法。 

      3.2.4.3调用HystrixEventNotifier发送SUCCESS消息

      3.2.4.4调用熔断器执行成功方法。

      3.2.4.5调用HystrixCommandExecutionHook的onComplete方法。   

    3.2.5 如果执行run方法异常

      3.2.5.1 在熔断器中记录一次失败。

      3.2.5.2 如果是RejectedExecutionException异常, 调用HystrixEventNotifier发送THREAD_POOL_REJECTED消息。

      3.2.5.3 如果是HystrixBadRequestException异常,调用HystrixEventNotifier发送BAD_REQUEST消息

      3.2.5.4 如果是HystrixTimeoutException异常,

      3.2.5.5 其他一次,执行getFallback回调函数。  

      

    1    

hystrix熔断器之command实现的更多相关文章

  1. hystrix熔断器之配置

    HystrixCommandProperties命令执行相关配置: hystrix.command.[commandkey].execution.isolation.strategy 隔离策略THRE ...

  2. hystrix熔断器之metrics

    Metric概述 HystrixCommands和HystrixObservableCommands执行过程中,会产生执行的数据,这些数据对于观察调用的性能表现非常有用. 命令产生数据后,Metric ...

  3. hystrix熔断器之线程池

    隔离 Hystrix有两种隔离方式:信号量和线程池. 线程池隔离:对每个command创建一个自己的线程池,执行调用.通过线程池隔离来保证不同调用不会相互干扰和每一个调用的并发限制. 信号量隔热:对每 ...

  4. hystrix熔断器之HystrixRequestLog

    HystrixRequestLog会记录所有执行过的命令.

  5. springcloud(六) Hystrix 熔断,限流

    Hystrix 熔断: 首先仍然启动Eureka,这里就不说了. OrderController.java: package com.tuling.cloud.study.user.controlle ...

  6. hystrix熔断机制修改配置

    0.注意 0.1.如果使用command 的 execute( )方法的话,其实在一个for循环,执行多次,其实每个的执行顺序并不是固定的,如果你想固定,需要使用queue circuit break ...

  7. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)

    1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝会自动烧断,以保护我们的电器, 那么如果换到了程序之中呢? 当现在服务的 ...

  8. Hystrix 熔断机制

    熔断机制相当于电路的跳闸功能,即在一定时间内,错误比例达到一定数目时业务从原来流程转移到另外的流程处理.在一段时间后,恢复到原业务逻辑. 测试代码如下 /** * @author zimu * @de ...

  9. spring cloud 2.x版本 Ribbon服务发现教程(内含集成Hystrix熔断机制)

    本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 前言 本文基于前两篇文章eureka-server和eureka-client的实现. 参考 ...

随机推荐

  1. 实战开发,使用 Spring Session 与 Spring security 完成网站登录改造!!

    上次小黑在文章中介绍了四种分布式一致性 Session 的实现方式,在这四种中最常用的就是后端集中存储方案,这样即使 web 应用重启或者扩容,Session 都没有丢失的风险. 今天我们就使用这种方 ...

  2. 初识ABP vNext(4):vue用户登录&菜单权限

    Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 登录 菜单权限 运行测试 最后 前言 上一篇已经创建好了前后端项目,本篇开始编码部分. 开始 几乎所有的系统都绕不开登 ...

  3. Promise 方法

    functionB(){ this.functionA() } functionA(){ return new Promise((resolve, reject) => { this.$http ...

  4. GridBagConstraints详解

    名称 作用 默认值 常量 位置 gridx 行(x)的第一个单元格 0并且为非负数 RELATIVE(相对的) 紧跟前一个组件的后面 gridy 列(y)的第一个单元格 0并且为非负数 RELATIV ...

  5. 分享一个bootstrap的上一步,下一步的插件

    效果图: 下载链接: https://www.daimabiji.com/index.php?m=content&c=down&a_k=ae0fI1gZyLT7oao56Pgu-dye ...

  6. JAVA设计模式简介及六种常见设计模式详解

    一.什么是设计模式                                                                                           ...

  7. 计算机网络-网络层(2)NAT协议

    网络地址转换(NAT,Network Address Translation)协议: 本地网络内通信的IP数据报的源与目的IP地址均在子网10.0.0.0/24内:所有离开本地网络去往Internet ...

  8. Hadoop的SecondaryNameNode的作用是什么?

    为节省篇幅,将SecondaryNameNode简称SNN,NameNode简称NN. NN与fsimage.edits文件 NN负责管理HDFS中所有的元数据,包括但不限于文件/目录结构.文件权限. ...

  9. 使用ClickHouse表函数将MySQL数据导入到ClickHouse

    #clickhouse-client :create database dw; :use dw; --导入数据: CREATE TABLE Orders ENGINE = MergeTree ORDE ...

  10. jmeter http并发测试时报错

    错误信息如下:jmeter Response code: Non HTTP response code: java.net.URISyntaxException 网上收了一大堆,都没法解决 我的用到了 ...