码迷,mamicode.com
首页 > 其他好文 > 详细

hystrix文档翻译之概述

时间:2017-12-13 14:37:14      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:有一个   例子   分布式系统   维护   报警   部署   限制   blog   情况   

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来封装外部依赖时,如下图所示,所有的依赖都相互隔离。当异常出现时,系统会执行相应的降级逻辑。

技术分享图片

 

  

    

  

hystrix文档翻译之概述

标签:有一个   例子   分布式系统   维护   报警   部署   限制   blog   情况   

原文地址:http://www.cnblogs.com/zhangwanhua/p/8032103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!