Spring Cloud学习 - Hystrix篇

一、Hystrix介绍

1、Hystrix是什么?

在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。

Hystrix可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制.

Hystrix通过将依赖服务进行资源隔离,进而组织某个依赖服务出现故障的时候,这种故障在整个系统所有的依赖服务调用中进行蔓延,同时Hystrix还提供故障时的fallback降级机制

总而言之,Hystrix通过这些方法帮助我们提升分布式系统的可用性和稳定性

2、Hystrix的设计理念

  • Give protection from and control over latency and failure from dependencies accessed (typically over the network) via third-party client libraries.
    给依赖于第三方库的应用程序提供给保护
  • Stop cascading failures in a complex distributed system.
    在复杂的分布式系统当中避免级联失败
  • Fail fast and rapidly recover.
    快速失败并且快速恢复
  • Fallback and gracefully degrade when possible.
    在可能的情况下提供回退和优雅降级的能力
  • Enable near real-time monitoring, alerting, and operational control.
    通过近乎实时的指标,监控和警报来优化发现故障的时间

3、Hystrix提供的能力
Hystrix的出现即为解决雪崩效应,它通过四个方面的机制来解决这个问题

  • 隔离(线程池隔离和信号量隔离):限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。
  • 优雅的降级机制:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。
  • 熔断:当失败率达到阀值自动触发降级(如因网络故障/超时造成的失败率高),熔断器触发的快速失败会进行快速恢复。
  • 缓存:提供了请求缓存、请求合并实现。
  • 支持实时监控、报警、控制

4、什么是雪崩效应?
微服务之间进行rpc或者http调用时,我们一般都会设置调用超时,失败重试等机制来确保服务的成功执行,看上去很美,如果不考虑服务的熔断和限流,就是雪崩的源头。

  • 假设我们有两个访问量比较大的服务A和B,这两个服务分别依赖C和D,C和D服务都依赖E服务

  • A和B不断的调用C,D处理客户请求和返回需要的数据。当E服务不能供服务的时候,C和D的超时和重试机制会被执行
    在这里插入图片描述

  • 由于新的调用不断的产生,会导致C和D对E服务的调用大量的积压,产生大量的调用等待和重试调用,慢慢会耗尽C和D的资源比如内存或CPU,然后也down掉。

  • A和B服务会重复C和D的操作,资源耗尽,然后down掉,最终整个服务都不可访问。
    在这里插入图片描述

常见的导致雪崩的情况有以下几种:

  • 程序bug导致服务不可用,或者运行缓慢
  • 缓存击穿,导致调用全部访问某服务,导致down掉
  • 访问量的突然激增。

二、整合Hystrix

1、创建项目 为eureka-client-consumer-hystrix,在Eureka篇中有eureka-client-consumer-ribbon项目,在此基础上添加新的POM依赖

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
		</dependency>

2、为main类添加@EnableHystrix注解

package com.eurekaclientconsumer.eurekaclientconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值