跳到主要内容

【21】Hystrix基本工作原理

文章目录

  • 前言
  • 工作流程图
    • 1.构造一个HystrixCommand或HystrixObservableCommand对象
  • 2.执行命令
    1. 响应是否被缓存?
    1. 断路器是否开启?
    1. 线程池/信号量是否已满?
  • 6.HystrixObservableCommand.construct()或HystrixCommand.run()
  • 7.计算断路器健康状态
    1. 获取降级
    1. 返回成功响应
  • 断路器
  • 隔离
    • 线程和线程池
  • 线程池的好处
  • 线程池的缺点
  • 线程成本
  • 信号量
  • 请求折叠
  • 请求缓存

前言

内容来自Hystrix

工作流程图

下图显示了通过 Hystrix 向服务提供者发出请求时会发生什么:

 

以下部分将更详细地解释此流程:

1.构造一个HystrixCommand或HystrixObservableCommand对象

第一步是构造一个HystrixCommandHystrixObservableCommand对象来表示对服务提供者发出的请求。向构造函数传递发出请求时需要的参数。

HystrixCommand如果期望返回单个响应,则构造一个对象。例如:

HystrixCommand command = new HystrixCommand(arg1, arg2);

HystrixObservableCommand如果期望返回一个发出响应的 Observable,则构造一个对象。例如:

HystrixObservableCommand command = new HystrixObservableCommand(arg1, arg2);

2.执行命令

有四种方法可以执行命令,通过使用 Hystrix 命令对象的以下四种方法之一(前两种仅适用于简单HystrixCommand对象,不适用于HystrixObservableCommand):