olang 微服务中的断路器 hystrix

简介: 之前说到过微服务容错处理,可以使用 断路器

之前说到过微服务容错处理,可以使用 断路器

使用断路器的原因是:

当下游的服务因为过载或故障,无法提供服务,我们需要及时的让上游服务知悉,且暂时 熔断 调用方和提供方的调用链,这是为了避免服务雪崩现象的发生

go 里面可以使用什么方式来做断路器 呢?

hystrix-go

go 中有一个项目实现了 这个断路器的功能:

https://github.com/afex/hystrix-go

image.png

Hystrix 能够在服务提供者出现故障时,隔离调用者和提供者,防止服务级联失败

并且 Hystrix 还提供失败回滚的逻辑,是系统快速从异常中恢复

为啥要用 Hystrix 来作为断路器?

  • Hystrix 自身完美的是实现了断路器模式
  • 自身可以提供信号量和线程隔离的方式以保护服务调用者的线程资源
  • 对延迟和失败提供了强大的容错能力,为系统提供保护和控制

图解 Hystrix 运行流程

如下是  golang 微服务容错处理是如何做的? 提到的断路器的 三种状态:

image.png

结合起来看看 Hystrix  具体流程

image.png

上述流程我们可以这样来理解

  • 使用 hystrix 的时候,hystrix 会给每一个远程调用逻辑封装成一个指令,这个指令包含这个远程调用的逻辑和失败回滚逻辑,这个 命令是 hystrix 唯一识别的
  • hystrix 根据 对应的指令获取到对应的断路器,判断断路器是否打开
  • 若打开
  • 执行执行失败回滚逻辑,不直接执行远程调用逻辑,因此此时服务已经熔断了
  • 若关闭或者是半开状态
  • 将执行池请求通行证
  • hystrix 中我们可以配置多个参数,最大并发数量,超时时间,最小请求阈值,超时窗口时间 和 错误比例阈值等等

图中我们可以看到 Metrics 控制器,

当我们的服务执行异常或者下游服务超时的时候, hystrix 命令就会向 Metrics 控制器 上报执行结果,并且  hystrix 命令对应的逻辑会进入到失败回滚逻辑

Metrics 控制器的作用

Metrics 控制器使用滑动窗口的方式统计一段时间内的调用次数,失败次数,超时次数 和 被拒绝的次数,下一篇的案例代码中,有体现如何配置

这个被拒绝的次怎么理解呢?指的是在向执行池子请求通行证的时候,池子已满,故被拒绝

如果这段时间内,执行错误的频率出超过了断路器错误率的阈值,那么断路器就会打开

在重试超时定时器到达之前的请求都会直接进入失败回滚逻辑,拒绝执行真正的远程调用

因此这就可以达到微服务容错的目的

今天就到这里,学习所得,若有偏差,还请斧正


欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章
|
Cloud Native Go 微服务
golang 微服务中的断路器 hystrix
golang 微服务中的断路器 hystrix
102 0
|
缓存 运维 监控
微服务技术系列教程(22) - SpringCloud- 服务保护机制Hystrix
微服务技术系列教程(22) - SpringCloud- 服务保护机制Hystrix
108 0
|
缓存 监控 Java
12SpringCloud - 断路器(Hystrix)引入
12SpringCloud - 断路器(Hystrix)引入
59 0
|
Java 机器人 Maven
【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法包含熔断器(Hystrix)
【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法包含熔断器(Hystrix)
180 0
|
3月前
|
Java 微服务 Spring
微服务(九)-Hystrix(断路器)
微服务(九)-Hystrix(断路器)
|
7月前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
154 1
|
7月前
|
监控 负载均衡 数据可视化
SpringCloud - Hystrix断路器-服务熔断与降级和HystrixDashboard
SpringCloud - Hystrix断路器-服务熔断与降级和HystrixDashboard
63 0
|
Cloud Native 测试技术 Go
golang 微服务中的断路器 hystrix 小案例
golang 微服务中的断路器 hystrix 小案例
|
监控 Java 微服务
16SpringCloud - 断路器项目示例(Hystrix Dashboard)
16SpringCloud - 断路器项目示例(Hystrix Dashboard)
57 0
|
Java Spring
15SpringCloud - 断路器项目示例(Feign Hystrix)
15SpringCloud - 断路器项目示例(Feign Hystrix)
51 0