【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文件
配置application.yml文件
配置启动类
功能测试,访问 http://localhost:8001/product/get/1等同于访问http://localhost:7001/microservice-product/product/get/1
路由转发映射配置
在 application.yml 配置文件中追加部分
重启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
功能测试,不携带token时候返回错误,携带token可以正常请求