上一篇 <<<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环境搭建
网友评论