从零学SpringCloud系列(四):服务容错保护Hystrix

本文详细介绍了Spring Cloud Hystrix作为断路器的作用,如服务隔离、熔断、降级和快速失败。阐述了Hystrix的工作流程、架构,包括两种命令模式、断路器的执行流程、依赖隔离策略、请求缓存和合并,以及Hystrix Dashboard的监控功能。通过学习,读者能理解Hystrix如何在微服务架构中保障系统的稳定性和弹性。
摘要由CSDN通过智能技术生成

一、Hystrix介绍

在微服务架构中,我们可能将系统拆分中多个服务单元,由于每个服务单元都运行在不同的进程中,他们彼此之间通过远程调用的方式执行,这样就有可能因为网络原因或者是依赖服务自身问题出现调用故障或延迟,而这些问题 会直接 导致调用方对外提供服务也出现延迟,若此时调用方的请求不断累加,最后会造成任务积压导致自身系统瘫痪。

针对上述问题,Spring Cloud Hystrix实现了断路器、线程隔离等一系列服务保护功能。Hystrix主要作用如下:

1)服务隔离和服务熔断

服务隔离:每次 接收到请求,都找一个单独的空间执行,这样你出了问题,就不会影响其他的业务。

服务熔断:发现某个服务不可用时,执行兜底方法,触发降级,返回我们预置的内容或异常。

2)服务降级、限流和快速失败。其实,服务降级和快速失败是差不多的意思。

3)请求合并和请求缓存

4)本身整合了对单体和集群的监控

二、Hystrix架构和处理流程解析

1、架构图

Hystrix整个工作流程概括如下:

 1、创建HystrixCommand或HystrixObservableCommand对象,用于封装请求,并且在构造方法 中配置请求执行需要的参数;

2、执行命令,H ystrix提供了4种执行命令的方法,后面我们在介绍。

3、判断结果是否使用缓存响应请求,若启用了缓存,且缓存可用,直接使用缓存响应请求。Hystrix支持请求缓存, 但是需要用户 自定义启动。

4、判断断路器是否打开,如果打开了, 直接跳到第8步

5、判断线程池/队列/信号量是否占满,如果已经占满,直接跳转到8步

6、执行HystrixObservableCommand.construct()或HystrixCommand.run(),如果执行失败或者超时,跳转到第8步;否则走9步

7、计算 断路器的健康度

8、走Fallback处理逻辑

9、返回请求响应

三、Hyxstrix的 两种命令模式

Command会以隔离的形式完成run方法的调用,用在依赖的服务返回单个操作结果的时候。

ObservableCommand会使用当前 线程进行调用,用在依赖的服务返回多个操作结果的 时候。

命令模式,将来自客户端的请求封装成一个对象,从而让你可以使用不同的请求对客户端进行参数化。他可以被用于

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

g-Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值