业务场景
在传统的项目中,当访问一个路径出现不可访问比如404,浏览器不同在加载甚至在10几秒后才会反馈出404,这明显对用户不友好,如果用户在加载404等还在不停的刷新当前网页将会导致后台不同的请求。这就需要我们做熔断降级
在当前的网关服务中,熔断降级主要是使用hystrix来实现服务降级,当访问的内部url超过限定的时间救出自动出现
代码层面
spring:
cloud:
gateway:
discovery:
locator:
enabled: true #表示注册中心生效,我们可以通过注册中心的服务名进行路由转发
lower-case-service-id: true
default-filters: #代表默认的过滤器,这是一个全局的过滤器,不属于任何一个route
- name: Hystrix
args:
name: default
fallbackUri: 'forward:/bad' #熔断之后服务降级
#熔断配置
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 10000 #熔断超时时间
@RestController
public class FusingController {
/**
* 系统请求超时后触发熔断机制
* 封装信息告知前端请求超时
*/
@RequestMapping("/fusing")
public String bad() {
return "请求超时估计是系统崩了( ー̀ωー́ )⊃⌒,快去找程序员";
}
}
完成以上代码配置就可以实现网关熔断之后服务降级这个跟feign有点像