springcloudRxJava编程语言爱好者

Hystrix功能介绍

2021-11-25  本文已影响0人  迦叶_金色的人生_荣耀而又辉煌

上一篇 <<<Gateway配置及流程分析
下一篇 >>>Sentinel功能介绍


1.Hystrix的原理

服务熔断(默认值10)、服务降级和隔离机制

2.核心代码

<!-- hystrix断路器 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
# 配置开启
feign:
  hystrix:
    enabled: true
# hystrix禁止服务超时,默认为1s就会走服务降级,导致业务逻辑正常走了,只是因为没及时返回导致走了服务降级的操作
hystrix:  
 command: 
   default: 
      execution: 
       timeout: 
        enabled: false
生产环境不要写false,最好是设置超时时间,默认为1s

核心代码

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
@EnableHystrix
public class AppOrder {
    public static void main(String[] args) {
        SpringApplication.run(AppOrder.class, args);
    }
}
//服务降级demo
@HystrixCommand(fallbackMethod = "orderToUserInfoFallback")
@GetMapping("/orderToUserInfo")
public ResponseBase orderToUserInfoHystrix() {
    System.out.println("orderToUserInfo:" + "当前线程池名称:" + Thread.currentThread().getName());
    return memberServiceFeigin.getUserInfo();
}
@RequestMapping("/orderToUserInfoFallback")
public ResponseBase orderToUserInfoFallback() {
    return setResultError("系统错误!!!!");
}

3.Fallback方法独立模块

使用@HystrixCommand会很复杂,尤其是把fallbackMethod写在每个具体的类里。
可以把fallbackMethod写到独立的模块,继承Feign客户端,然后在feignClient里加上fallback对应的类即可。
@FeignClient(name=””,fallbackMethod=A1.class)

public A extends Interfaces{};

public A1 extends A{
@Override
public method1(){
//fallback具体内容
}
}

4.Fallback与blockHandler的区别

fallback是服务熔断或者业务逻辑出现异常执行的方法(1.6版本以上)
blockHandler 限流出现错误执行的方法。


推荐阅读:
<<<Sentinel功能介绍
<<<Sentinel与Hytrix区别
<<<Sentinel的熔断降级策略
<<<Sentinel的热点词限流
<<<Sentinel的限流方式实例
<<<Sentinel策略的持久化方式
<<<Sentinel整合nacos实现策略持久化
<<<Sentinel整合网关服务核心代码
<<<Sentinel环境搭建

上一篇下一篇

猜你喜欢

热点阅读