Netflix Zuul 简介

Zuul 是一个 L7 应用网关,提供动态路由、监控、弹性、安全等功能。

Zuul 是从设备和网站到应用程序后端的所有请求的前门。作为边缘服务应用程序,Zuul 旨在实现动态路由,监视,弹性和安全性。Zuul 包含了对请求的路由和过滤两个最主要的功能。如下图:

image.png

上图中,来自 APP 应用的所有请求均通过 Zuul 网关进行路由、过滤。

为什么要构建 Zuul?

Netflix API 流量的规模和多样性有时会导致生产问题迅速出现且毫无征兆。我们需要一个系统,使我们能够快速改变行为以应对这些情况。

Zuul 是 Netflix 开源的微服务网关,它可以和 Eureka、Ribbon、Hystrix 等组件配合使用。

Zuul 使用了一系列不同类型的过滤器,使我们能够快速灵活地将功能应用于我们的边缘服务。这些过滤器帮助我们执行以下功能:

  • 身份验证:可以检查请求中的用户凭证,如用户名和密码、令牌(如 JWT - JSON Web Tokens)等。

  • 授权:确定用户是否有访问特定资源或服务的权限。假设在一个包含多个微服务的系统中,有一个管理用户权限的微服务,Zuul 过滤器可以与这个微服务通信,查询用户是否有权限访问目标微服务。比如,对于一个只允许管理员访问的系统配置微服务,过滤器会检查用户的角色是否为 “管理员”,如果不是,就返回 403 Forbidden(禁止访问)的响应。

  • 日志记录:记录请求的关键信息,如请求的 URL、HTTP 方法、请求头、请求参数和请求时间等。这些日志对于故障排查和性能分析非常有用。

  • 监控指标收集:收集请求相关的性能指标,如响应时间、吞吐量等。这些指标可以用于监控系统的健康状况。

  • 请求转换:可以修改请求的内容,如添加、删除或修改请求头和请求参数。在一个需要跨多个不同微服务的系统中,可能需要在请求中添加一些公共的信息,以便后端微服务能够更好地处理请求。

  • 响应转换:对后端微服务返回的响应进行转换,如改变响应的数据格式(从 XML 转换为 JSON)、添加或删除响应头。

  • 流量控制:根据系统的负载情况和配置的策略,控制请求的流量。例如,在流量高峰期,可以通过过滤器限制每秒进入系统的请求数量。

  • 限流:对特定用户、IP 地址或微服务的请求进行限制。可以根据用户的等级(如普通用户和 VIP 用户)分配不同的请求配额。

Zuul 组件

Zuul 2.x 组件:

Zuul 1.x 组件:👈

  • zuul-core - 包含编译和执行过滤器核心功能的库。

  • zuul-simple-webapp - 一个展示如何使用 zuul-core 构建应用程序的简单示例的 web 应用程序。

  • zuul-netflix - 为 Zuul 添加其他 NetflixOSS 组件的库——例如使用 Ribbon 进行请求路由。

  • zuul-netflix-webapp - 将 zuul-core 和 zuul-netflix 打包在一起形成一个易于使用的软件包的 web 应用程序。

注意:本教程我们将介绍组件。

点击下载/查看本教程相关资料或者源代码。
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号