vlambda博客
学习文章列表

API网关组件:Zuul2.0新特性


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 的大体架构图

API网关组件:Zuul2.0新特性

过滤器前端和后端的 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"