zoukankan      html  css  js  c++  java
  • netflix-hystrix-简介[译]

    Hystrix是什么
    在分布式环境下,不可避免的有一些服务会失效,Hystrix通过延迟容忍和错误容忍逻辑,可以控制分布式服务之间的交互。Hystrix可以隔离服务访问入口、抑制级联错误、
    支持fallback,所有的这些都可以提升系统的整体弹性(resiliency)。

    Hystrix用来做什么

    保护和控制访问服务的延迟和错误;
    抑制在复杂分布式系统中的级联错误;
    快速失败和快速恢复;
    fallback和降级;
    近实时的监控、报警以及操作控制。

    Hystrix可以解决什么问题

    在复杂的分布式系统中,通常都会存在许多服务依赖,不可避免会有服务失效。假设一个应用依赖30个服务,每个服务在99.99%的运行时间里都是正常的,可以计算:
    99.99e30 = 99.7% uptime
    0.3% of 1 billion requests = 3,000,000 failures
    2+ hours downtime/month even if all dependencies have excellent uptime(99.99%).

    所有服务健康时,请求流是这样的:

    一个后端系统产生延迟就会影响用户整个请求:

    依赖的服务lib是一个“黑盒”,它大多都会进行网络请求,但更加糟糕的是该服务系统可能还会依赖其他服务。在高吞吐量的应用中,一个服务依赖的延迟可能在数秒内使整个服务器资源耗竭:

    Hystrix如何解决问题

    Hystrix可以将服务调用包裹在HystrixCommand中,每一个HystrixCommand都维护着一个threadpool,从而隔离服务,当一个服务产生延迟时,其“吞噬”的资源也只会限定在该HystrixCommand内(比如至多只会占用n个线程资源),而不会对全局造成影响。依赖threadpool,Hystrix还可以实现timeout操作。同时,当请求超时、异常、线程池满、熔断器打开时,Hystirx可以fallback。

  • 相关阅读:
    python面向对象(进阶篇)
    python面向对象三大特性
    点击头像单独把图片拉取出来.然后再次点击回到初始效果
    关于iOS的自动弹出键盘问题
    为UITextView添加通知..来检测UITextView内容的改变
    null 解决方法
    获取手机的唯一标示uuid
    SDK | 声波传输
    Xcode svn import项目 上传.a文件(静态库)
    点击状态栏回到顶部
  • 原文地址:https://www.cnblogs.com/holoyong/p/9022598.html
Copyright © 2011-2022 走看看