hystrix文档翻译之概述

Hystrix是什么

  在一个大型的分布式系统中,难免有些依赖服务会失败。hystrix通过容错逻辑来控制不同服务间的交互。hystrix通过隔离各服务交互节点来防止连级错误,并且提供降级功能,最终保证系统的可靠性。

hystrix的历史

  略

hystrix作用

  hystrix被设计来解决一下问题:

  • 通过控制调用第三方包时的延时和错误来提供保护。
  • 避免复杂系统的连级错误。
  • 对于错误快速失败和恢复。
  • 当异常出现是提供降级服务。
  • 实时的监控,高警,和其他控制选项。

hystrix解决哪些问题

  一个复杂的分布式系统有大量的依赖服务,这些依赖服务在某些时刻难免会发生错误。如果这个系统没有对依赖服务进行隔离,它很容易因为依赖服务的异常而导致整个应用的挂机。

  举一个例子,有一个应用依赖了30个服务,每个服务有99.99%的时间是正常的。

  所以你可能认为对于整个系统而言,99.9930=99.7%的时间是正常的。一亿次请求会有3000000次失败,每个月会有2个小时的宕机时间。

  而实际的情况可能更差。每个依赖服务0.01%的异常,都可能导致整个系统可能潜在的宕机。

  健康的系统的请求流程如下:

  如果其中一个依赖服务出现延时,它将阻塞整个系统。

  在一个高并发的系统中,依赖服务的延时将会导致整个系统在极端的时间内资源耗尽。如果应用的并发量超过了依赖服务的处理能力,可能会导致请求失败,更坏的情况可能导致系统各类资源的耗尽从而引起连级错误。  

  很多时候第三方服务如同一个黑盒对外封闭,并且随时可能变更。而每个调用方的处理能力有不同。网络失败,服务延时,新的client部署,client包有bug,所有这些问题都会导致整个系统宕机。

  所以我们需要管理和隔离这些问题,避免一个服务失败导致整个系统宕机。

  hystrix设计原则:

  • 阻止依赖服务使用容器线程。
  • 快速失败来代替等待。
  • 提供降级功能。
  • 使用隔离技术来限制每个依赖的影响。
  • 通过实时metrics、监控、报警来来发现异常。
  • 使用实时配置来帮助系统恢复。
  • 控制第三方调用。

hystrix实现策略

  hystrix做了一下工作来保证系统稳定性。

  • 通过HystrixCommand或HystrixObservableCommand来封装和隔离所有的外部调用。
  • 定义外部服务调用的timeout时间。
  • 为每一个外部服务都维护一个独立的线程池,当请求超过线程池处理能力时,将会直接拒绝。
  • 记录成功,失败,timeout,线程池拒绝信息。
  • 对于异常比例超过指定值的服务,进行熔断操作。
  • 提供降级功能,当请求执行失败,拒绝,超时,熔断。
  • 实时监控metrics和配置。

  当使用hystrix来封装外部依赖时,如下图所示,所有的依赖都相互隔离。当异常出现时,系统会执行相应的降级逻辑。

  

    

  

时间: 2024-10-23 11:42:15

hystrix文档翻译之概述的相关文章

hystrix文档翻译之开始使用

获取包 使用maven获取包. <dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>x.y.z</version> </dependency> 使用lvy获取包 <dependency org="com.netflix.hystrix" na

hystrix文档翻译之工作原理

流程图 下面的图片显示了一个请求在hystrix中的流程图. 1.构造一个HystrixCommand或者HystrixObservableCommand对象 第一步是创建一个HystrixCommand或者HystrixObservableCommand对象来执行依赖请求.创建时需要传递相应的参数. 如果请求只返回一个单一值,使用HystrixCommand. HystrixCommand command = new HystrixCommand(arg1, arg2); 如果希望返回一个Ob

hystrix文档翻译之如何使用

Hello World! 使用HystrixCommand实现"Hello World". public class CommandHelloWorld extends HystrixCommand<String> { private final String name; public CommandHelloWorld(String name) { super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup&

hystrix文档翻译之插件

插件 可以通过实现插件来改变Hystrix的行为.可以通过HystrixPlugins来注册自定义插件,这些插件会被应用到HystrixCommand,HystrixObservableCommand和HystrixCollapser. 插件类型 事件通知 在HystrixCommand和HystrixObservableCommand执行过程中会触发一些时间,实现HystrixEventNotifier可以监听这些事件进行一些告警和数据收集. 发布metrics 通过实现HystrixMetr

python文档翻译之概述

Python是一个使用方便且功能强大的变成语言.它具有高效的高级数据结构和面向对象编程特性.其优雅的语法.动态类型.解释型特性使得它成为大多数平台上脚本和快速应用程序开发的理想语言. Python解释器和标准库可以从所有的Python平台上获取和免费使用.这些网站上还有一些免费的第三方python模块.工具.程序.文档. Python解释器很容易通过c或c++来实现新的数据类型或者方法.Python很适合作为可定制应用程序的扩展语言. 本教程向读者介绍Python语言和系统的基本概念和特点,帮助

Docker 官方文档翻译

Docker 官方文档翻译 docker-compose 概述 docker compose 是利用docker来运行多个容器的工具.利用compose 在一个文件中定义多个容器,然后利用一个单独的命令,可以执行你所想做的任何事情. compose 能较好的作为开发环境的假设,服务器脚手架以及Ci方面的应用.我们不推荐使用在生产环境中. 使用compose 需要一下三个步骤: 1.在Dockerfile中定义你的应用环境,一边在任何地方重建环境 2.在docker-compose.yml中定义你

Unity Networking API文档翻译(一):Networking概述

写在翻译前的话:      我使用过Photon,研究过Ulink这些Unity提供的多人在线游戏服务器组件,这些商业组件虽然很好很强大.但是对于一个独立开发者来说,4000多软妹币还是点多.总想找一个免费的.对于Unity5.2版本后提供的Unity Networking组件(简称UNet),国外已经有很多开发者在使用了,虽然稳定性还有待考验,但是unity官方是会不停更新的,主要的是免费的啊!官网没有中文翻译,所以自己准备把这块翻译下,有不好的地方敬请指出,共同完善这个中文文档.翻译的过程就

Core Bluetooth 概述 【官方文档翻译】

Core Bluetooth 框架在Mac和iOS平台,为配备了低功耗蓝牙无线技术的设备提供了进行通信所需要的类.例如,您的应用程序可以发现,探索,和低功耗的外围设备进行交互,如心率监视器.数字温控器.作为OS X v10.9和iOS 6,Mac和iOS设备也可以作为低功耗蓝牙外设,提供服务数据到其他设备,包括其他的Mac和iOS设备. 快速导读 蓝牙低功耗无线技术是基于蓝牙4.0规范,其中,除其他事项外,定义了一组协议的低能量的设备之间的通信.核心蓝牙框架是蓝牙低功耗协议堆栈的抽象.这就是说,

Android官方技术文档翻译——开发工具的构建概述

本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Checks>这篇太长了,没译完,所以这次就发一下<Build Overview>的翻译好了. 这一篇是对Android 的开发工具进行构建的概述,比如Android Studio,Android Gradle 插件,SDK和ADT等. 翻译不易,转载请注明CSDN博客上的出处: http://bl