【Way to Spring Cloud 7】Spring Cloud Zuul

Spring Cloud Zuul

什么是Zuul

Zuul 包含了对请求路由和校验过滤两个最主要的功能:

  • 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础:
    客户端请求网关/api/product,通过路由转发到 product 服务
    客户端请求网关/api/order,通过路由转发到 order 服务
  • 过滤功能则负责对请求的处理过程进行干预,是实现请求校验等功能的基础

Zuul 和 Eureka 进行整合,将 Zuul 自身注册为 Eureka 服务治理中的服务,同时从 Eureka 中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。

Zuul 路由功能实战

新建 microservice-cloud-10-zuul-gateway-7001
配制pom.xml文件
【Way to Spring Cloud 7】Spring Cloud Zuul
配置application.yml文件
【Way to Spring Cloud 7】Spring Cloud Zuul
配置启动类
【Way to Spring Cloud 7】Spring Cloud Zuul
功能测试,访问 http://localhost:8001/product/get/1等同于访问http://localhost:7001/microservice-product/product/get/1

路由转发映射配置

在 application.yml 配置文件中追加部分
【Way to Spring Cloud 7】Spring Cloud Zuul
重启zuul路功能,只要接收到/product开头的路径请求,都会转发到microservice-cloud-08-provider-product-hystrix-8001 服

Zuul 过滤器实战

自定义过虑器需要继承 ZuulFilter,ZuulFilter是一个抽象类,需要覆盖它的4个方法,如下:
filterType:返回字符串代表过滤器的类型,返回值有:
pre:在请求路由之前执行
route:在请求路由时调用
post:请求路由之后调用, 也就是在route和errror过滤器之后调用
error:处理请求发生错误时调用

filterOrder:此方法返回整型数值,通过此数值来定义过滤器的执行顺序,数字越小优先级越高。
shouldFilter:返回Boolean值,判断该过滤器是否执行。返回true表示要执行此过虑器,false不执行。
run:过滤器的业务逻辑

自定义过滤器 LoginFilter
【Way to Spring Cloud 7】Spring Cloud Zuul
功能测试,不携带token时候返回错误,携带token可以正常请求