API网关组件:Zuul2.0新特性
微服务网关组件 Zuul 2.1.2 已发布,了解组件更新内容。
据 Zuul 的 wiki 介绍,Zuul 2.x 包含以下的核心组件:
zuul-core - Zuul 2.0 的核心功能
zuul-sample - a sample driver application for Zuul 2.0 的示例驱动应用
Zuul 2 的大体架构图
过滤器前端和后端的 Netty 事件处理器(handler)主要负责处理网络协议、Web 服务器、连接管理和代理工作。这些内部工作被抽象之后,所有主要的工作都会交给过滤器完成。入站过滤器在代理请求之前运行,可用于验证、路由或装饰请求。端点过滤器可用于返回静态响应,或将请求代理到后端服务。出站过滤器在返回响应后运行,可用于诸如压缩(gzipping)、指标或增删自定义请求头之类的内容。
Zuul 的功能几乎完全取决于每个过滤器的逻辑。这意味着它可以部署在多种上下文中,使用配置和运行的过滤器解决不同的问题。
Zuul 2 的核心功能特性
服务器协议
HTTP/2——完整的入站(inbound)HTTP/2 连接服务器支持
双向 TLS(Mutual TLS)——支持在更安全的场景下运行 Zuul
弹性特性
自适应重试——Netflix 用于增强弹性和可用性的核心重试逻辑
源并发保护——可配置的并发限制,避免源过载,隔离 Zuul 背后的各个源
运营特性
请求 Passport——跟踪每个请求的所有生命周期事件,这对调试异步请求非常有用
状态分类——请求成功和失败的可能状态枚举,比 HTTP 状态码更精细
请求尝试——跟踪每个代理的尝试和状态,对调试重试和路由特别有用
一些即将推出的功能,包括:
Websocket/SSE——支持通道推送通知
限流和限速——防止恶意客户端连接和请求,帮助抵御大规模攻击
掉电过滤器——Zuul 过载时禁用一些 CPU 密集型特性
可配置路由——基于文件的路由配置,而不需要在 Zuul 中创建路由过滤器
使用
Maven
<dependency>
<groupId>com.netflix.zuul</groupId>
<artifactId>zuul-core</artifactId>
<version>2.1.2</version>
</dependency>
Gradle
compile "com.netflix.zuul:zuul-core:2.1.2"