前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >熔断器Hystrix

熔断器Hystrix

作者头像
名字是乱打的
发布2022-05-13 10:32:06
2880
发布2022-05-13 10:32:06
举报
文章被收录于专栏:软件工程

1 为什么要使用熔断器Hystrix,它有啥作用呢?

    在微服务架构中通常会有多个服务层调用基础服务的故障可能会导致级联故障, 进而造成整个系统不可用的情况,这种现象被称为

是一种 因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大过程。 如下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A 不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成 了。

我们在微服务开发中如何避免产生这种雪崩效应呢?                                                         可以使用Hystrix来实现熔断器避免

2 什么是Hystrix

Hystrix [hɪst'rɪks]的中文含义是豪猪, 因其背上长满了刺,而拥有自我保护能力

能使你的系统在出现依赖服务失效的时候

了解熔断器模式请看下图:

快速入门熔断器Hystrix

Feign 本身支持Hystrix,不需要额外引入依赖。我们仅需在yml里开启即可

代码语言:javascript
复制
feign:
 hystrix: 
  enabled: true

(2)我们在使用微服务时候通常需要在微服务调用者代码中创建一个client来接通被调用模块,其实我们在添加熔断器也可以配置到这个client包下并实现接口,比如qa服务调用base服务在com.zyh.qa.client包下创建impl包,包下创建熔断实现类,实现BaseClient接口

client
代码语言:javascript
复制
@FeignClient(value = "tensquare-base",fallback = BaseClientImpl.class)//@FeignClient("tensquare-base")使的
public interface BaseClient {
    @RequestMapping(value = "label/{labelId}",method = RequestMethod.GET)
    public Result findById(@PathVariable("labelId") String labelId);
    //这里必须@PathVariable("labelId") 指定labelId,因为RequestMappering里的labelId是传到PathVariable中的
    //这样在tensquare_base模块中才会在RequestMapper中
}
熔断器
代码语言:javascript
复制
@Component //熔断器交给spring容器
public class BaseClientImpl implements BaseClient {
    @Override
    public Result findById(String labelId) {
    return new Result(false, StatusCode.ERROR,"子服务连不上了,交给我这个熔断器了");
    }
}
熔断器添加时候,我的思考

相比之前普通调用微服务开发,使用熔断器的意义主要是添加和使用备胎. 我们这里需要指定如果被调用的微服务断了,我们需要去哪里执行代替的服务,所以需要在原来的client类@FeignClient里添加备胎类 备胎其实方法都和client一样,目的就是当微服务断掉时候,我们也可以执行到一样的方法,不让请求落空,甚至去做别的高级处理

SpringCloud集成的 Hystrix熔断器的优点

它可以实时的监管每个配置了熔断器的client 如果A服务调用B服务,C为B的Client接口实现类具体表现: eg: 如果AB正在正常工作,B挂了,那么会走备胎C 如果A正常使用备胎C,B突然好了,那么下一次请求将继续由B来接收处理

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 为什么要使用熔断器Hystrix,它有啥作用呢?
  • 2 什么是Hystrix
  • 快速入门熔断器Hystrix
    • 熔断器添加时候,我的思考
    • SpringCloud集成的 Hystrix熔断器的优点
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档