开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):技术点-SpringCloud 熔断器介绍】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11422
技术点-SpringCloud 熔断器介绍
目录:
一、Hystrix 概念
二、feign 结合 Hystrix 使用
一、Hystrix 概念
Hysthx 是一个供分布式系统使用,提供延迟和容器功能,保证复杂的分布系统在面临不可避免的失败时,仍能有其障性。
比如系统中有很多服务。当某些服务不稳定的时候,使用这些服务的用户钱程将会阻塞,如果没有隔离机制,系统随时就有可能会挂掉,从而带来很大的风险。 SpringCloud 受用 Hystrix 各提供断路器、资源隔离与用找修复功能。
其中有几个概念,第一个是分布式,目前的项目叫微服务架构,而项目要按照分布式进行相互部署,现在有三个模块是 edu,oss,vod。这三个要放到不同的服务器中,接下来如图所示,每个模块放到不同的服务器中部署,这个部署叫分布式。
假如第一个服务器在192.168.1.1 8002,第二个服务器放在192.168.1.2 8002,第三个放在192.168.1.3 8003中。这三个是独立运行的,所以放到三台不同的电脑中,或者三台不同的服务器中。
这三个放在一起就叫分布式,说的简单点把不同的部署放在不同的服务器中。
在这个中熔断器就是供分布式系统使用,它提供延迟和容错功能,保证复杂的分布系统在面临不可避免的失败时,仍能有其障性。
就假设想用 edu 去调用 vod,现在它们俩是不同的部署也是不同的服务,假如调用过程中 vod 出现问题,就是宕机了,现在用 edu 肯定不能调用,熔断器就是让它不再调用。
第二种情况就是假如还是调用 vod,但是现在它并没有宕机,vod它运行比较慢,运行时间很长。
但是它有一个默认的运行时间,如果没有响应就直接报错了,那我们现在就可以让启用时间长一点,在10秒以内,这就是它的一个延迟处理。
在实际的项目中熔断处理都需要用到,具体的过程如图所示:
二、feign 结合 Hystrix 使用
改造 service-edu 模块
- 在 service 的 pom 中添加依赖
- 在配置文件中添加 hystrix 配置,就是延迟处理(时间限制)
- 在 service-edu 的 client 包里面创建熔断器的实现类
- 修改 VodClient 接口的注解
- 修改调用接口的代码