记录学习Hystrix知识--20210929

记录学习Hystrix知识–20210929

使用的Hystrix的maven依赖

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

Hystrix可以用来实现服务熔断降级和线程隔离,

工作流程:
当调用一个服务出现问题的时候,会开启一个时间窗口(保持时间是10s,默认参数值可以自定义–metrics.rollingStats.timeInMilliseconds),在10s内进行统计请求的次数,如果统计的请求数大于了配置的最小请求数(可配参数,默认是20–circuitBreaker.requestVolumeThreshold),如果达到了最小次数,再进行计算失败请求的次数占总请求数
的比例,如果比例值大于了阈值(可配参数,默认是50%–circuitBreaker.errorThresholdPercentage),那就会熔断该服务,不再调用这个服务,而是用服务降级指定的方法。之后会开启一个时间窗口,每隔5秒(可配参数,默认值是circuitBreaker.sleepWindowInMilliseconds)放过一次请求去请求服务,如果成功了,就重置断路器,否则继续保持这个状态。
Hystrxi使用到的参数可以在HystrixCommandProperties这个类里找到。

在这里插入图片描述
配置参数后面大多都有默认值。

写的一个demo方法

@Service
public class ReviewHystrixService {
    private String CLIENT_URL = "http://eureka-client/client/port";

    @Autowired
    private RestTemplate restTemplate;

    @HystrixCommand(
//           指定服务降级的方法
            fallbackMethod = "fall1",
//          配置线程隔离的属性
            threadPoolKey = "review1",
            threadPoolProperties ={
                    @HystrixProperty(name = "coreSize",value = "5"),
                    @HystrixProperty(name = "MaxQueueSize", value = "10")
            }
    )
    public String review(){
        return  restTemplate.getForObject(CLIENT_URL,String.class);
    }

    public String fall1(){
        return "服务出现故障,暂时不能使用";
    }
}

@HystrixCommand 这个注解里有对应的参数,忘了的话可以点进去看。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值