Zuul(1、简介)
1.网关简介
在微服务框架中,每个对外服务都是独立部署的,对外的api或者服务地址都不是不尽相同的。对于内部而言,通过注册中心服务拉取即可获取。那么外部调用呢?
微服务可能是不同的技术栈实现的,http或websocket等等,也会进一步加大客户端的调用难度。
所以,出现了API网关,根据请求的URL不同,路由到不同的服务上去,同时统一了入口,还能进行统一的身份鉴权、日志记录、分流等操作。
2.网关的作用
- 提供一个单独且统一的API入口用于访问内部一个或多个API。简单来说就是一个统一入口,比如现在的支付宝或者微信的相关api服务一样,都有一个统一的api地址,统一的请求参数,统一的鉴权。
- 屏蔽内部微服务的微小变动,保持整个系统的稳定性。
-
客户端和服务端直连的弊端:
- 客户端会对此请求不同的微服务,增加客户端复杂性
- 存在跨域请求时,需要进行额外处理
- 认证服务,每个服务需要独立认证
- UI端和微服务耦合
-
网关的优点:
- 减少api请求次数
- 限流
- 缓存
- 统一认证
- 降低微服务的复杂度
- 支持混合通信协议(前端只和api通信,其他的由网关调用)
-
网关的缺点:
- 网关需高可用,可能产生单点故障
- 管理复杂
3. Zuul网关介绍
Zuul是Netflix开源的微服务网关,可以和Eureka、Ribbon、Hystrix等组件配合使用,Spring Cloud对Zuul进行了整合与增强,Zuul的主要功能是路由转发和过滤器。
3.1 Zuul的核心功能
- 认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求。
- 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
- 动态路由:动态地将请求路由到不同的后端集群。
- 压力测试:逐渐增加指向集群的流量,以了解性能。
- 负载分配:预先为每一种负载类型分配对应容量,请求超过容量时自动丢弃。
- 静态响应处理:在边缘位置直接建立部分相应,从而避免其转发到内部集群。