Skip to content

第7章 微服务集群网关

本章要点:

  • 关于 Zuul
  • Zuul 框架的使用
  • 在 Spring Cloud 中使用 Zuul
  • Zuul 的原理
  • Zuul 功能进阶

在前面章节介绍的例子中,我们都是直接访问服务调用者的 URL 来访问微服务, 在实际环境中 ,应用程序会有多个服务调用者,如何将它们组织起来,统一对外提供服务呢 ?

本章将讲述使用 Netflix 的 Zuul 框架构建微服务集群的网关 。

7.1 Zuul框架介绍

7.1.1 关于Zuul

Spring Cloud 集群提供了多个组件,用于进行集群内部的通信,例如服务管理组件Eureka,负载均衡组件 Ribbon。如果集群提供了 API 或者 Web 服务,需要与外部进行通信,比较好的方式是添加一个网关,将集群的服务都隐藏到网关后面 。 这种做法对于外部客户端来说 ,无须关心集群的内部结构,只需关心网关的配置等信息:对于 Spring Cloud 集群来说 ,不必过多暴露服务 ,提升了集群的安全性 。

代理层作为应用集群的大门,在技术选取上尤为重要,很多传统的解决方案,在软件上选择了 Nginx、 Apache 等服务器。 Netflix 提供了自己的解决方案:Zuul 。 Zuul 是 Netflix的一个子项目 ,Spring Cloud 将 Zuul 进行了进一步的实现与封装,将其整合到 spring-netflix项目中,为微服务集群提供代理、过滤、路由等功能 。

7.1.2 Zuul的功能

Zuul 将外部的请求过程划分为不同的阶段,每个阶段都提供了 一系列过滤器, 这些过滤器可以帮助我们实现 以下功能。

  • 身份验证和安全性:对需要身份认证的资源进行过滤,拒绝处理不符合身份认证的请求。
  • 观察和监控:跟踪重要的数据,为我们展示准确的请求状况 。
  • 动态路由:将请求动态路由到不同的服务集群 。
  • 负载分配:设置每种请求的处理能力,删除那些超出限制的请求 。
  • 静态晌应处理:提供一些静态的过滤器,直接响应一些请求,而不将它们转发到集群内部。
  • 路由的多样化:除了可以将请求路由到 Spring Cloud 集群外,还可以将请求路由到其他服务。

7.2在Web项目中使用Zuul

7.3 在微服务集群中初试Zuul

7.4 路由配置

7.5 Zuul的其他配置

7.6 Zuul功能进阶

7.7 本章小结