SpringCloud H版 GateWay 网关服务降级

Posted 小毕超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud H版 GateWay 网关服务降级相关的知识,希望对你有一定的参考价值。

一、GateWay 网关服务降级

在上篇文章中我们讲到了GateWay 网关的基本使用和路由的转发,今天一起学习下,gateway的服务降级。

上篇文章地址:https://blog.csdn.net/qq_43692950/article/details/122023067

但是可能会发现一个问题,如果转发后的地址无法响应,则会返回错误,比如停掉上篇文章中的服务提供者,在浏览器请求地址http://localhost/provider1/getData,则会:

这就给人一种不好的感觉了,在每个具体服务中,我们都可以进行服务降级,在网关中就不行吗?答案肯定是可以的,毕竟这是Spring cloud自家开发的,肯定做了和自家服务保护框架hystrix的适配工作,下面我们一起来实现下吧。

二、GateWay 整合服务降级

修改pom文件,添加hystrix的依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

在启动类中开启hystrix

@SpringBootApplication
@EnableEurekaClient
@EnableHystrix
public class GateWayApplication 
    public static void main(String[] args) 
        SpringApplication.run(GateWayApplication.class, args);
    

在修改配制文件前,先写一个统一的服务降级接口,一旦某个服务出现错误,就转调用此接口:

@RestController
public class FallbackController 

    @GetMapping("/fallbackA")
    public ResponseTemplate fallbackA() 
        return ResFailTemplate.builder().message("GateWay 服务降级处理!").build();
    

配制文件中添加 hystrix 的配制:

hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true #是否应该有超时
        isolation: # 隔离策略
          strategy: THREAD
          thread:
            timeoutInMilliseconds: 2000 #服务调用超时时间,THREAD隔离模式下是请求超时是会取消调用线程从而立即返回的,SEMAPHORE模式下会等待响应回来再判断是否超时。
            interruptOnTimeout: true   #执行超时的时候,是否需要将他中断
            interruptOnCancel: true  #是否在方法执行被取消时中断方法

主要配制了隔离策略为线程池和超时时间为2秒,再修改gateway的配制:

- id: provider2
  uri: http://127.0.0.1:8091
  predicates:
    - Path=/provider1/**
  filters:
    - StripPrefix=1 # 去除请求地址中的前缀
    - name: Hystrix
      args:
        name: fallbackCmdA
        fallbackUri: forward:/fallbackA

然后重启网关,重新访问接口:http://localhost/provider1/getData


接口已经被降级处理了。

关于更多hystrix的讲解,可以参考下面两篇我的博客:

https://blog.csdn.net/qq_43692950/article/details/121996806

https://blog.csdn.net/qq_43692950/article/details/121998205


喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

以上是关于SpringCloud H版 GateWay 网关服务降级的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud H版 GateWay 过滤器讲解 及 使用Guava 统一限流处理。

SpringCloud(Greenwich版)新一代API网关Gateway

3W字吃透:微服务网关SpringCloud gateway底层原理和实操

springcloud-gateway 网关异常处理

SpringCloud --- 服务网关 (Gateway)

SpringCloud --- 服务网关 (Gateway)