Zuul简介
Zuul是Netflix公司开源的一个API网关组件,Spring Cloud对其进行封装做到开箱即用,同时,Zuul还可以与Eureka、Ribbon、Hystrix等组件配合使用。
Zuul的核心是一系列过滤器,开发者通过实现过滤器接口,可以做大量切面任务,即AOP思想的应用。Zuul的过滤器之间没有直接的相互通信,而是通过本地ThreadLocal变量进行数据传递的。
所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。
Zuul作用
在微服务架构中,通常会有多个服务提供者。设想一个电商系统,可能会有商品、订单、支付、用户等多个类型的服务,而每个类型的服务数量也会随着整个系统体量的增大也会随之增长和变更。作为UI端,在展示页面时可能需要从多个微服务中聚合数据,而且服务的划分位置结构可能会有所改变。网关就可以对外暴露聚合API,屏蔽内部微服务的微小变动,保持整个系统的稳定性。
当然这只是网关众多功能中的一部分,它还可以做负载均衡,统一鉴权,协议转换,监控监测等一系列功能。
作为网关的Zuul,主要有以下作用:
- 路由转发:接受请求,转发到后端服务;
- 过滤器:提供一系列过滤器完成权限、日志、限流等切面任务。
- Zuul原理图如下
Zuul特性
- 认证和安全:识别每个需要认证的资源,拒绝不符合要求的请求。
- 性能监测:在服务边界追踪并统计数据,提供精确的生产视图。
- 动态路由:根据需要将请求动态路由到后端集群。
- 压力测试:逐渐增加对集群的流量以了解其性能。
- 负载卸载:预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。
- 静态资源处理:直接在边界返回某些响应。
Zuul详细学习
https://www.baidu.com/link?url=d89WvNSG0Yg95aOhHszLNi9kIw5w1iqz3vshkFB3G3Qs7zVPxJ0WS_1amtw54zHo&wd=&eqid=8fef02aa0006bae1000000035dda0017