Hystrix的几种模式的使用

Hystrix的几种模式的使用

通常我们在进行远程服务调用的时候,为了让某些服务发生了错误或者表现不佳的时候,能够不影响到另外的一些服务,引入了一个所谓的
“所谓的客户端弹性模式”,这个模式的目的就是为了让客户端能够快速的失败,而不消耗诸如线程池或者数据库之类的资源,,并且可以
防止远程服务的问题在服务与服务之间传播,导致批量服务挂掉

客户端弹性模式有这样几种:

  • 客户端负载均衡(client load balance):
    将服务端的服务实例(集群)的物理位置物理位置缓存在客户端,当服务消费者需要调用该服务的时候,负载均衡器就会从它维护的服务实例(集群)中返回一个给客户端调用,这种模式就是Ribbon提供的功能,其它三种都是Hystrix提供的功能
  • 断路器模式(circuit breaker):
    确保服务客户端不会重复调用失败的服务
  • 后备模式( fallback):
    当服务调用失败的时候,后备模式询问是否有可执行的方案
  • 舱壁模式(bulkhead):
    隔离服务客户端上不同的服务调用,以确保表现不佳的服务不会耗尽客户端所有资源

后面三种客户弹性模式都是Hystrix能够实现的

首先说说自己的环境,使用的是spring-boot 和spring -cloud-hystrix

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

如果我们想让Hystrix生效,需要将@EnableCircuitBreaker或者@EnableHystrix 加入到引导类上,是Hystrix能够生效

  1. 断路器模式
    其实断路器模式超级简单,原理就是 当我们调用服务超过指定时间,那么就将该服务断开,避免异常会在其他服务之间蔓延,导致其他服务不可用

简单测试代码如下

    @GetMapping ("/circuit")
    @HystrixCommand
    public String circuit(@RequestParam int num,@RequestParam long sleepTime) {
   
        // 这个工具类,就是让想成sleep指定的的时间,然后返回一个RandomNum
        int runLong = TimeOutUtils.randomlyRunLong(num, sleepTime)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值