1、关于Zuul

       如果所有的微服务系统都对外提供服务,那么这些微服务系统都需要实现诸如数据验证、安全校验、接口权限等功能,这对于系统的维护非常不利,这也就是api网关存在的原因。在SpringCloud的大家庭中,使用的是zuul组件来搭建api网关。zuul是一个能够实现动态路由、监控、弹性扩展并且安全的API网关组件。

1.1 使用Zuul的好处

在微服务架构中,Zuul作为SpringCloud的路由网关组件,主要有以下6个重要作用:

  1. Zuul、Ribbon、Eureka相结合,可以实现智能路由和负载均衡的功能,Zuul能够将请求流量按某种策略分发到集群状态的多个服务实例。
  2. 网关将所有服务的API接口统一聚合,并统一对外暴露。外界系统调用API接口时,都是由网关对外暴露的API接口,外界系统不需要知道微服务系统中各服务相互调用的复杂性。微服务系统也保护了其内部微服务单元的API接口,防止其被外界直接调用,导致服务的敏感信息对外暴露。
  3. 网关服务可以做用户身份认证和权限认证,防止非法请求操作API接口,对服务器起到保护作用。
  4. 网关可以实现检控功能,实现日志输出,对请求进行记录。
  5. 网关可以用来实现流量监控,在高流量的情况下,对服务进行降级。
  6. API接口从内部服务分离出来,方便做测试。

 

2、Zuul工作原理

       Zuul是通过Servlet来实现的,Zuul通过自定义的ZuulServlet(类似于SpringMvc的DispatchServlet)来对请求进行控制。Zuul的核心是一系列过滤器,可以在Http请求的发起和响应返回期间执行一系列的过滤器。
 

2.1 Zuul包含的四种过滤器

1. PRE过滤器
       Pre过滤器是在请求路由到具体的服务之前执行的,这种类型的过滤器可以做安全验证。如:身份验证、参数验证等。
 
2. ROUTING过滤器
       Routing过滤器用于将请求路由到具体的微服务实例。默认情况下,Routing过滤器使用Http Client进行网络请求。
 
3. POST过滤器
       Post过滤器是在请求已被路由到微服务后执行的。一般情况下用作收集统计信息、指标,以及将响应传输到客户端。
 
4. ERROR过滤器
       Error过滤器是在其他过滤器发生错误时执行的。

2.2 Zuul请求的生命周期

       当一个客户端Request请求进入Zuul网关服务时,网关先进入“pre filter”(PRE过滤器),进行一系列的验证、操作或判断。然后交给“routing filter”(ROUTING过滤器)进行路由转发,转发到具体的服务实例进行逻辑处理、返回数据。当具体的服务处理完后,最后由“post filter”(POST过滤器)进行处理,该类型的处理器处理完之后,将Response信息返回给客户端。

SpringCloud 路由网关 Zuul组件(一)

2.3 Zuul过滤器的关键特性

       Zuul采取了动态读取、编译和运行这些过滤器。过滤器之间不能直接相互通信,而是通过RequestContext对象来共享数据,每个请求都会创建一个RequestContext对象。

Zuul过滤器的关键特性:

  1. Type(类型):Zuul过滤器的类型,决定了过滤器在请求的哪个阶段起作用。例如Pre、Post阶段等。
  2. Execution Order(执行顺序):该特性规定了过滤器的执行顺序,Order指越小越先执行。
  3. Criteria(标准):过滤器(Filter)执行所需的条件。
  4. Action(行动):如果符合执行条件,则执行Action(即逻辑代码)。

相关文章:

  • 2021-07-28
  • 2021-06-21
  • 2021-08-27
  • 2022-12-23
  • 2021-08-07
  • 2021-09-26
  • 2021-05-08
  • 2021-05-24
猜你喜欢
  • 2021-08-08
  • 2021-08-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-10
  • 2021-11-30
相关资源
相似解决方案