目录
-
定义
Zuul是一种微服务API网关,其核心是一系列过滤器,包含了对请求的路由(用来跳转)和过滤两个最主要功能。
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。
-
实现功能
- 身份认证与安全;识别每个资源的验证要求,并拒绝那些与要求不符的请求。
- 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
- 动态路由:动态地将请求路由到不同的后端集群。
- 压力测试:逐渐增加指向集群的流量,以了解性能。
- 负载分配:为每一种负载类型分配对应容量,并弃用超岀限定值的请求。
- 静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群。
- 多区域弹性:跨越AWS Region进行请求路由,旨在实现ELB ( Elastic Load Balancing) 使用的多样化,以及让系统的边缘更贴近系统的使用者。
-
实现原理
-
过滤器类型
-
PRE:这种过滤器在请求被路由之前调用。
-
-
可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。
-
-
-
ROUTING:这种过滤器将请求路由到微服务。
-
-
这种过滤器用于构建发送给微服务的请求,并使用Apache HttpClient或Netflix Ribbon请求微服务。
-
-
-
POST:这种过滤器在路由到微服务以后执行。
-
-
这种过滤器可用来为响应添加标准的 HTTP Header。收集统计信息和指标、将响应从微服务发送给客户端等。
-
-
-
ERROR:在其他阶段发生错误时执行该过滤器。
-
-
除了默认的过滤器类型,Zuul还允许创建自定义的过滤器类型。例如,可以定制一种 STATIC类型的过滤器,直接在Zuul中生成响应,而不将请求转发到后端的微服务。
-
-
-
可自定义。
-
-
-
-
请求生命周期
-
-
Reference
- spring官方文档
https://spring.io/projects/spring-cloud-netflix
- 【狂神说Java】SpringCloud最新教程IDEA版
https://www.bilibili.com/video/BV1jJ411S7xr
- SpringCloud学习笔记(六)(狂神视频笔记)
https://blog.csdn.net/hexinqiong/article/details/116457425
- Zuul入门实战(完整版)
https://blog.csdn.net/qq_44112474/article/details/109094775