SpringCloud 系列列表:
文章名 | 文章地址 |
---|---|
01、Eureka - 集群、服务发现 | https://blog.csdn.net/qq_46023503/article/details/128319023 |
02、Ribbon - 负载均衡 | https://blog.csdn.net/qq_46023503/article/details/128332288 |
03、OpenFeign - 远程调用 | https://blog.csdn.net/qq_46023503/article/details/128387961 |
04、Hystrix - 断路器 | https://blog.csdn.net/qq_46023503/article/details/128408601 |
05、Sleuth - 链路追踪 | https://blog.csdn.net/qq_46023503/article/details/128409339 |
06、Gateway - 网关 | https://blog.csdn.net/qq_46023503/article/details/128430842 |
07、Alibaba - 介绍 | https://blog.csdn.net/qq_46023503/article/details/128434080 |
08、Nacos - 安装、启动 | https://blog.csdn.net/qq_46023503/article/details/128460411 |
09、Nacos - 配置文件中心 | https://blog.csdn.net/qq_46023503/article/details/128460649 |
10、Nacos - 注册中心 | https://blog.csdn.net/qq_46023503/article/details/128460494 |
Hystrix - 断路器
1 服务雪崩
1.1 什么是服务雪崩
服务雪崩的本质:线程没有及时回收。 不管是调用成功还是失败,只要线程可以及时回收,就可以解决服务雪崩
1.2 解决服务雪崩
- 修改调用的超时时长(不推荐) 将服务间的调用超时时长改小,这样就可以让线程及时回收,保证服务可用 优点:非常简单,也可以有效的解决服务雪崩。缺点:不够灵活,有的服务需要更长的时间去处理(写库,整理数据)
- 设置拦截器
2 在 OpenFeign 中使用 Hystrix(重点)
2.1 创建服务
- 创建 eureka 服务,并启动
- 创建 provider-order-service,将其注册到 eureka 服务中
- 创建 consumer-user-service,并使用 openfeign 远程调用 order 服务,最后将其注册到 eureka 服务中
- 创建与 OpenFeign 中入门案例一样
2.2 进行修改
在 consumer-user-service 下创建一个 Hystrix 类,实现 OpenFeign 的接口
@Component
public class MyHystrix implements Openfeign {
@Override
public String doOrder() {//当远程调用失败后,会调用此方法
return "调用失败,这个是 hystrix 中的方法";
}
}
为 OpenFeign 接口注解添加 fallback 属性,值为实现类的类型
@FeignClient(value = "orderservice",fallback = MyHystrix.class)
public interface Openfeign {
@GetMapping("doOrder")
public String doOrder();
}
在 yml 文件中添加
feign:
hystrix:
enabled: true #开启断路器的使用
2.3 访问测试
关掉 provider-order-service 服务,发现访问到时 MyHystrix 类的实现方法
3 断路器的状态说明以及状态转变
3.1 关状态
服务正常调用 A—》B
3.2 开状态
在一段时间内,调用失败次数达到阀值(5s 内失败 3 次)(5s 失败 30 次的)则断路器打开,直接 return
3.3 半开状态
断路器打开后,过一段时间,让少许流量尝试调用 B 服务,如果成功则断路器关闭, 使服务正常调用,如果失败,则继续半开