zuul是什么
zuul是Netflix设计用来为所有面向设备、web网站提供服务的所有应用的门面,zuul可以提供动态路由、监控、弹性扩展、安全认证等服务,他还可以根据需求将请求路由到多个应用中。
zuul是用来解决什么问题的
在使用网关之前,动态的路由是通过Nginx的配置来做的,但是一旦发生改变,比如IP地址发生改变,加入其它路由,就要重新配置Nginx,重启Nginx。安全认证是放在每一个应用中,应用中包含了非业务强相关的内容,看起来也是不够优雅。
在目前的应用中,zuul主要用来做如下几件事情:
-
动态路由:APP、web网站通过zuul来访问不同的服务提供方,且与ribbon结合,还可以负载均衡的路由到同一个应用不同的实例中。
-
安全认证:zuul作为互联网服务架构中的网关,可以用来校验非法访问、授予token、校验token等。
-
限流:zuul通过记录每种请求的类型来达到限制访问过多导致服务down掉的目的。
-
静态响应处理:直接在zuul就处理一些请求,返回响应内容,不转发到微服务内部。
-
区域弹性:主要是针对AWS上的应用做一些弹性扩展。
zuul入门实战
启动类
zuul的路由配置:
zuul:
routes:
product:
path: /myProduct/**
serviceId: product
#排除某些路由
ignored-patterns:
- /**/product/listForOrder
简洁配置
zuul:
routes:
product: /myProduct/**
#排除某些路由
ignored-patterns:
- /**/product/listForOrder
访问路由
可以从路由中获取响应信息,成功
排除路由设置
如下进行排除配置:
ignored-patterns:
- /**/product/listForOrder
这里用PostMan对其进行排除路由的测试:
结果访问排除的路由接口为404,成功。
传递Cookie
因为zuul的敏感头sensitiveHeaders 会过滤掉敏感头 包括Cookie,那么只需要对其设置为空
Zuul的特点
- 路由+过滤器 = Zuul
- 核心是一系列的过滤器
前置过滤器(Pre) 的使用场景有:
- 限流
- 鉴权
- 参数校验调整
后置过滤器(Post)