博客
关于我
Hystrix 使用手册 | 官方文档翻译
阅读量:419 次
发布时间:2019-03-06

本文共 2865 字,大约阅读时间需要 9 分钟。

Hystrix 技术文档

1. Hystrix 概述

Hystrix 是 Netflix 开发的一款开源工具,主要用于处理分布式系统中的延迟和故障,通过实现 Circuit Breaker、Fallback 以及 Bulkhead 等模式,帮助系统提高可靠性和弹性。

2. Hystrix 的核心功能

Hystrix 提供了多种功能和特性,主要包括以下几点:

  • 延迟和故障容忍度:Hystrix 可以通过增加延迟和故障容忍度,保护分布式系统的交互。
  • Circuit Breaker:在故障或延迟达到一定阈值时,自动切断依赖,并执行降级策略。
  • Fallback:在服务调用失败时,提供一个降级方法,确保系统的继续运行。
  • Bulkhead:通过隔离机制,限制单个依赖的影响范围,防止级联故障。
  • 线程池和队列管理:通过线程池和队列来控制并发和资源占用,避免线程饥喹和阻塞。
  • 监控和报警:提供实时监控和报警功能,帮助管理员及时发现和处理问题。

3. Hystrix 的工作原理

Hystrix 的核心工作原理主要包括以下几个步骤:

  • 封装请求:将远程调用包装成 HystrixCommand 或 HystrixObservableCommand 对象,启动单独线程运行。
  • 超时控制:设置请求的超时时间,默认为 1000 ms,可以根据实际需求进行调整。
  • 线程池管理:为每个依赖服务分配线程池,当线程池满时直接拒绝,防止单点故障影响整个系统。
  • 熔断器触发:当依赖服务的失败率达到一定阈值或超时时,熔断器会触发降级策略。
  • fallback 执行:执行预定义的降级方法,返回合理的结果,避免级联故障。
  • 4. 使用 Hystrix

    Hystrix 提供了多种方式来执行命令,主要包括同步和异步两种模式。

    4.1 HystrixCommand 示例

    以下是一个简单的 HystrixCommand 示例:

    public class CommandHelloWorld extends HystrixCommand {
    private final String name;
    public CommandHelloWorld(String name) {
    super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
    this.name = name;
    }
    @Override
    protected String run() {
    return "Hello " + name + "!";
    }
    }

    4.2 异步执行示例

    以下是一个异步执行的示例:

    public class CommandHelloWorld extends HystrixObservableCommand {
    private final String name;
    public CommandHelloWorld(String name) {
    super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
    this.name = name;
    }
    @Override
    protected Observable
    construct() {
    return Observable.create((subscriber) -> {
    try {
    if (!subscriber.isUnsubscribed()) {
    subscriber.onNext("Hello " + name + "!");
    subscriber.onCompleted();
    }
    } catch (Exception e) {
    subscriber.onError(e);
    }
    }).subscribeOn(Schedulers.io());
    }
    }

    5. Hystrix 配置

    Hystrix 提供了丰富的配置选项,主要包括以下几个方面:

    5.1 执行属性

    • isolation.strategy:设置隔离策略, THREAD 或 SEMAPHORE,默认为 THREAD。
    • execution.timeout.enabled:是否开启超时控制,默认为 true。
    • execution.isolation.thread.timeoutInMilliseconds:线程池的超时时间,默认为 1000 ms。

    5.2 Circuit Breaker 属性

    • circuitBreaker.enabled:是否开启熔断器,默认为 true。
    • circuitBreaker.requestVolumeThreshold:触发熔断的请求数量,默认为 20。
    • circuitBreaker.sleepWindowInMilliseconds:熔断后等待的时间,默认为 5000 ms。

    5.3 Metrics 配置

    • metrics.rollingStats.timeInMilliseconds:指标的滑动窗口时间,默认为 10000 ms。
    • metrics.rollingPercentile.numBuckets:指标的 buckets 数量,默认为 10。

    6. HystrixRequestCache

    Hystrix 提供了请求缓存功能,主要包括以下配置:

    • requestCache.enabled:是否启用请求缓存,默认为 true。
    • requestLog.enabled:是否启用日志记录,默认为 true。

    7. 线程池配置

    线程池的配置主要包括以下参数:

    • coreSize:核心线程数,默认为 10。
    • maximumSize:最大线程数,默认为 10。
    • maxQueueSize:队列最大容量,默认为 -1(使用 SynchronousQueue)。

    8. Metrics 和监控

    Hystrix 提供了丰富的指标,帮助监控系统性能和状态。这些指标包括成功率、失败率、延迟等,可以通过配置的方式进行收集和上报。

    9. Plugins

    Hystrix 支持通过插件扩展功能,用户可以根据需求添加自定义的插件来优化系统性能和管理。

    总结

    通过上述内容可以看出,Hystrix 是一个强大的工具,能够有效地处理分布式系统中的延迟和故障,提升系统的可靠性和弹性。通过合理配置和使用,开发人员可以更好地管理和优化复杂的分布式系统。

    转载地址:http://linuz.baihongyu.com/

    你可能感兴趣的文章
    node安装卸载linux,Linux运维知识之linux 卸载安装node npm
    查看>>
    node安装及配置之windows版
    查看>>
    Node实现小爬虫
    查看>>
    Node提示:error code Z_BUF_ERROR,error error -5,error zlib:unexpected end of file
    查看>>
    Node提示:npm does not support Node.js v12.16.3
    查看>>
    Node搭建静态资源服务器时后缀名与响应头映射关系的Json文件
    查看>>
    Node服务在断开SSH后停止运行解决方案(创建守护进程)
    查看>>
    node模块化
    查看>>
    node模块的本质
    查看>>
    node环境下使用import引入外部文件出错
    查看>>
    node环境:Error listen EADDRINUSE :::3000
    查看>>
    Node的Web应用框架Express的简介与搭建HelloWorld
    查看>>
    Node第一天
    查看>>
    node编译程序内存溢出
    查看>>
    Node读取并输出txt文件内容
    查看>>
    node防xss攻击插件
    查看>>
    noi 1996 登山
    查看>>
    noi 7827 质数的和与积
    查看>>
    NOI-1.3-11-计算浮点数相除的余数
    查看>>
    noi.ac #36 模拟
    查看>>