本篇文章为系列文章,未读前几集的同学请猛戳这里:
本篇文章讲解 Hystrix 的服务熔断和服务降级以及基于 Feign 的服务熔断处理。
点击链接观看:服务熔断视频(获取更多请关注公众号「哈喽沃德先生」)
服务熔断一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施,所以很多地方把熔断亦称为过载保护。
服务消费者 pom.xml 添加 hystrix 依赖。
服务消费者业务层代码添加服务熔断规则。
OrderServiceImpl.java
服务消费者启动类开启熔断器注解。
访问:http://localhost:9090/order/1/product 结果如下:
通过结果可以看到,服务熔断已经启用。每 5 秒会去重试一次 Provider 如果重试失败继续返回托底数据,如此反复直到服务可用,然后关闭熔断快速恢复。
吃鸡游戏相信大家应该都有所耳闻,这个游戏落地的时候什么东西都没有,装备都是需要自己去主动搜索或者通过击杀其他队伍而获取。所以,在这个游戏中就涉及到一个背包的问题,背包的大小决定了能携带的物资数量,总共分为三级,在你没有拿到更高级的背包之前,你只能将最重要的装备留在身边。其实服务降级,就是这么回事,再看一个例子。
大家都见过女生旅行吧,大号的旅行箱是必备物,平常走走近处绰绰有余,但一旦出个远门,再大的箱子都白搭了,怎么办呢?常见的情景就是把物品拿出来分分堆,比了又比,最后一些非必需品的就忍痛放下了,等到下次箱子够用了,再带上用一用。而服务降级,就是这么回事,整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来。
HystrixBadRequestException
异常;
服务消费者 pom.xml 添加 hystrix 依赖。
服务消费者业务层代码添加服务降级规则。
服务消费者启动类开启熔断器注解。
访问:http://localhost:9090/order/3/product 结果如下:
关闭服务提供者,再次访问:http://localhost:9090/order/3/product 结果如下:
通过结果可以看到,服务降级已经启用。当 Provider 不可用时返回托底数据,直到服务可用快速恢复。
点击链接观看:Feign 雪崩处理视频(获取更多请关注公众号「哈喽沃德先生」)
我们在父工程下再创建一个 Consumer 项目这次是基于 Feign 实现声明式服务调用。
服务提供者添加 openfeign
依赖,openfeign 默认集成了 hystrix 依赖。
服务提供者需要开启 Feign 对于 Hystrix 的支持。
Product.java
Order.java
ProductService.java
OrderService.java
OrderServiceImpl.java
ProductServiceFallback.java
OrderController.java
服务消费者启动类开启 @EnableFeignClients
注解。
我们已经可以通过 Feign 实现服务降级处理,但是服务不可用时如果我们想要捕获异常信息该如何实现?接下来一起学习一下。
通过 fallbackFactory
属性声明服务熔断降级处理类。
实现 FallbackFactory<T>
接口。
访问:http://localhost:9091/order/1/product/list 结果如下:
控制台打印结果:
至此 Hystrix 服务容错知识点就讲解结束了。
Spring Cloud 系列之 Netflix Hystrix 服务容错(三)
原文:https://www.cnblogs.com/youngdeng/p/12867271.html