十、Hystrix熔断器(三)服务熔断

五 服务熔断

1、熔断是什么?

熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇形链路的某个微服务出错不可用或者响应、时间太长时,会进行服务的降级,从而熔断该节点微服务的调用,快速返回错误的响应信息。

当检测到该节点微服务调用响应正常后,恢复调用链路

在Spring Cloud框架中。熔断机制通过Hystrix实现。Hystrix会监控微服务之间调用的状况,

当失败的调用到一定阈值时,(缺省是5秒内调用20次失败,就会启动熔断机制)

熔断机制的注解是@HystrixCommand

2、如何配置熔断

① 找到服务提供者 cloud-provider-hystrix-payment8001

对 PaymentService 添加如下代码

//服务熔断
// 在时间窗口期10秒内,如果10次请求有6次是失败的,就会进行服务熔断
@HystrixCommand(fallbackMethod = "paymentCircuitBreaker_fallback",commandProperties = {
        @HystrixProperty(name = "circuitBreaker.enabled",value = "true"),// 是否开启断路器
        @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",value = "10"),// 请求次数
        @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "10000"), // 时间窗口期
        @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "60"),// 失败率达到多少后跳闸
})
public String paymentCircuitBreaker(@PathVariable("id") Integer id)
{
    if(id < 0)
    {
        throw new RuntimeException("******id 不能负数");
    }
    String serialNumber = IdUtil.simpleUUID();

    return Thread.currentThread().getName()+"\t"+"调用成功,流水号: " + serialNumber;
}


public String paymentCircuitBreaker_fallback(@PathVariable("id") Integer id)
{
    return "id 不能负数,请稍后再试,/(ㄒoㄒ)/~~   id: " +id;
}

②、controller就是正常的调用服务熔断的代码

// 服务熔断测试
@GetMapping("/payment/hystrix/circuit/{id}")
public String paymentCircuitBreaker(@PathVariable("id") Integer id) throws InterruptedException {

    String result = paymentService.paymentCircuitBreaker(id);
    return  result;
}

③、测试:当10秒内,10次请求有6次是失败的话,就会进行熔断,此时,即使是正确的请求也会返回fullback

clipboard

访问上述请求访问十次,然后切成正确请求,依旧返回fullback,证明此时服务是熔断的

clipboard

最后继续发送正确请求,由于时间窗口期内,错误请求的次数降低,服务恢复链路

clipboard

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud中的熔断器Hystrix)主要作用是避免在复杂分布式系统中服务之间的“雪崩”效应,从而提高系统的可用性和稳定性。当某个服务出现异常或者超时时,Hystrix会立即断开这个服务的调用,避免故障扩散,从而保证核心流程的正常运行。 服务降级是Hystrix的一种应用场景,它通过降低服务质量或者关闭一些非核心服务来保证核心流程的正常运行。服务降级可以通过配置Hystrix的fallback方法来实现,当某个服务出现异常或者超时时,Hystrix会立即调用fallback方法,返回一个默认值或者一个简单的提示信息,从而避免整个系统的崩溃。 服务熔断Hystrix的另一种应用场景,它通过断开某个服务的调用来避免故障扩散。当某个服务出现异常或者超时时,Hystrix会立即打开熔断器,断开这个服务的调用,从而避免系统的崩溃。在一定时间内,Hystrix会定时检查这个服务是否恢复正常,如果恢复正常,则关闭熔断器,否则继续保持打开状态。 服务降级和服务熔断的原理都是基于Hystrix的断路器模式实现的。Hystrix通过封装请求,统计请求的成功率和失败率,当失败率超过一定阈值时,Hystrix会打开熔断器,断开请求,从而避免系统的崩溃。同时,Hystrix会记录请求的响应时间,当响应时间超过一定阈值时,Hystrix也会断开请求,避免请求的超时阻塞整个系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值