一、为什么需要Hystrix?

在分布式环境中,服务调度是特色也是头疼的一块。在服务治理章节我们介绍了服务治理的功能。前一课我们也介绍了ribbon、feign进行服务调用。现在自然的到了服务监控管理了。hystrix就是对服务进行隔离保护。以实现服务不会出现连带故障。导致整个系统不可用

二、Hystrix是什么?

Hystrix从Netflix API团队于2011年开始的弹性工程工作演变而来。在分布式环境中,许多服务依赖项中的一些不可避免地会失败。Hystrix是一个库,可通过添加延迟容错和容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,阻止它们之间的级联故障以及提供后备选项来实现这一目标,所有这些都可以提高系统的整体弹性。

三、Hystrix能解决什么问题?

复杂分布式体系结构中的应用程序有许多依赖项,每个依赖项在某些时候都不可避免地会失败。如果主机应用程序没有与这些外部故障隔离,那么它有可能被他们拖垮。

四、什么是服务雪崩?

服务雪崩是指,由于服务提供者不可用导致服务调用者不可用,并且在生产过程中,这种不可用逐渐扩大的现象。

5、造成雪崩的原因有哪些?

  • 服务提供者不可用/服务调用者不可用
  • 硬件故障、程序Bug、缓存击穿、用户请求量过大
  • 重试造成流量加大
  • 用户的频繁重试、代码逻辑重试

六、如何解决灾难性雪崩效应?

  • 降级
    当请求超时,资源不足对的情况下进行服务降级。降级后可以配合降级返回托底数据实现一个fallback()方法,当请求后端发生异常的时候,可以使用fallback()方法返回的值
  • 熔断
    当失败率(网络/超时)达到阀值自动触发降级,熔断器触发的快速失败会进行快速回复
  • 请求缓存
  • 隔离
    限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用

七、什么是服务熔断和服务降级?

服务熔断和电路熔断是一个道理,如果一条线路电压过高,保险丝会熔断,防止出现火灾,但是过后重启仍然是可用的;而服务熔断则是对于目标服务的请求和调用大量超时或失败,这时应该熔断该服务的所有调用,并且对于后续调用应直接返回,从而快速释放资源,确保在目标服务不可用的这段时间内,所有对它的调用都是立即返回,不会阻塞的。再等到目标服务好转后进行接口恢复。

服务降级是在服务器压力陡增的情况下,利用有限资源,根据当前业务情况,关闭某些服务接口或者页面,以此释放服务器资源以保证核心任务的正常运行。流量控制本质上是减小访问量,而服务处理能力不变;而服务降级本质上是降低了部分服务的处理能力,增强另一部分服务处理能力,而访问量不变。

八、Hystrix设计原则是什么?

  1. 对依赖服务调用时出现的调用延迟和调用失败进行控制和容错保护
  2. 在复杂的分布式系统中,阻止某一个依赖服务的故障在整个系统中蔓延
  3. 提供fail-fast(快速失败)和快速恢复的支持
  4. 提供fallback优雅的降级的支持
  5. 支持近实时的监控、报警以及运维操作

九、Hystrix 有哪两种命令模式?

  • HystrixCommand
    用在依赖服务返回单个操作结果的时候
  • HystrixObservableCommand
    用在依赖服务返回多个操作结果的时候,其实可以认为返回的是个事件发射器,可以持续发射数据。