Hystrix熔断器快速上手
简介
- Hystrix是Spring Cloud提供的一种带有熔断机制的框架,由于在微服务系统中同一个操作会由多个不同的微服务来共同完成,所以微服务与微服务之间会由很多相互的调用,由于在分布式环境中经常会出现某个微服务节点故障的情况,所以会由调用失败发生,而熔断器的作用就是当出现远程调用失败的时候提供一种机制来保证程序的正常运行而不会卡死在某一次调用,类似Java程序中的try-catch结构,而只有当异常发生的时候才会进入catch的代码块
使用Hystrix
-
导入依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
-
配置
#开启熔断机制 feign.hystrix.enabled=true # 设置hystrix超时时间,默认1000ms hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=6000
-
创建服务降级实现(兜底方法)
- 创建远程调用服务实现类
- 使用fallback(退路)指定降级服务类名
@Component @FeignClient(name = "service-vod",fallback = VodFileDegradeFeignClient.class) public interface VodClient {@DeleteMapping("/edu-vod/{videoId}")R deleteVideo(@PathVariable(name = "videoId") String videoId) throws Exception;@DeleteMapping("/edu-vod/delete")R deleteMultiVideo(@RequestBody List<String> videoSourceIdList)throws Exception; }
@Component public class VodFileDegradeFeignClient implements VodClient {@Overridepublic R deleteVideo(String videoId) throws Exception {return R.error().message("删除视频失败");}@Overridepublic R deleteMultiVideo(List<String> videoSourceIdList) throws Exception {return R.error().message("批量删除视频失败");} }