没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
SpringCloud Hystrix 服务熔断
教学目标
1)能够说出服务熔断的概念以及使用场景
2)了解Hystrix是什么
3)理解Hystrix的三种状态
4)掌握Hystrix的快速入门
5)
掌握Spring Cloud Feign + Hystrix的集成方式
6)
了解Hystrix Dashboard基本使用
1
什么是服务熔断
在微服务架构的应用系统中,为了完成一次业务请求,往往需要多个服务协作完成,每次调用都会产生
一个调用链。
而且微服务之间进行
rpc
或者
http
调用时,我们一般都会设置
调用超时
,
失败重试
等机
制来确保服务的成功执行,看上去很完善,实际上却暗藏隐患。
假设我们有两个访问量比较大的服务A和B,这两个服务分别依赖C和D , C和D服务都依赖E,如下图所
示:
A和B不断的调用C,D处理客户请求和返回需要的数据。当E不能供服务的时候,C和D的 超时 和 重试 机
制会被执行,如下图所示:
由于新的调用不断的产生,会导致C和D对E服务的调用大量的积压,产生大量的调用等待和重试调用,
慢慢会耗尽C和D的资源,比如内存或CPU,然后挂掉,如下图所示:
接下来A和B服务会重复C和D的操作,资源耗尽,然后挂掉,最终一堆服务都不可访问,如下图所示:
像这种调用链路的连锁故障,叫做雪崩
。我们正在开发的万信金融P2P项目也会碰到类似场景,例如:
开户业务,满标放款业务等(可以查看业务流程图)。
如何解决呢?我们想到了现实生活中的“保险丝”。一个小区家家户户的电路中都会安装有保险丝,它起
什么作用呢?当电路发生故障或异常时,伴随着电流不断升高,并且升高的电流有可能损坏电路中的某
些重要器件,也有可能烧毁电路甚至造成火灾。若电路中正确地安装了保险丝,那么保险丝就会在电流
异常升高到一定的高度和热度的时候,自身熔断切断电流,从而起到保护电路安全运行的作用。
通过这个案例,我们自然就想到,在分布式架构中,我们也可以为每个微服务加装“保险丝”,即:熔断
器,也叫断路器。当发现依赖的服务在一段时间内持续出现错误,熔断器就会自动断开,后续的请求不
会再真正访问依赖的服务,而是快速返回错误或缓存的数据,从而避免程序不断的尝试执行可能失败的
操作,降低资源消耗。
熔断这一概念来源于电子工程中的断路器(Circuit
Breaker)。在互联网系统中,当下游服务因访问压
力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。这
种牺牲局部,保全整体的措施就叫做服务熔断。
当进入熔断状态后,服务消费方将不会发出远程调用,直接返回失败。这样的情况用户体验显然不好,
针对这种情况,服务消费方可以在本地准备一个备用的降级方法进行用户体验改善处理。比如,查询接
口可准备默认值或缓存;秒杀业务可提示用户稍后再试。这种因服务处理能力退化而优雅返回错误的能
力,叫做服务降级。
熔断器是系统稳定性的最后一重保障。
2
Hystrix
上面已经介绍过服务熔断的基本概念, 而若实现它则需要有非常丰富的多线程开发经验 。不过Netflix的
Hystrix库已经帮我们实现,可以使用它来让我们的应用变得更加健壮。
Hystrix简介
Spring
Cloud中的断路器组件就是Hystrix,它也是Netflix套件的一部分。hystrix对应的中文名字是“豪
猪”,豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与hystrix本身的功能
不谋而合,因此Netflix团队将该框架命名为Hystrix,并使用了对应的卡通形象做作为logo。
剩余13页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1900
- 资源: 3864
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功