本文共 1479 字,大约阅读时间需要 4 分钟。
Zuul作为路由网关组件,在微服务架构中有着非常重要的作用,主要体现在以下6个方面。
Zuul是通过Servlet来实现的,Zuul通过自定义的ZuulServlet(类似于Spring MVC的DispatcherServlet)来对请求进行控制。
Zuul的核心是一系列过滤器,可以在Http请求的发起和响应返回期间执行一系列的过滤器。Zuul包括以下4中过滤器:
PRE过滤器
:它是在请求路由道具体的服务之前执行的,这种类型的过滤器可以做安全验证,例如身份验证、参数验证等。ROUTING过滤器
:它用于将请求路由到具体的微服务实例。在默认情况下,它使用Http Client进行网络请求。POST过滤器
:它是请求已被路由到微服务后执行的。一般情况下,用作收集统计信息、指标,以及将响应传送到客户端。ERROR过滤器
:它是在其他过滤器发生错误时执行的。Zuul采取了动态读取、编译和运行这些过滤器。过滤器之间不能直接相互通信,而是通过RequestContext对象来共享数据,每个请求都会创建一个RequestContext对象。
Zuul 过滤器具有以下关键特性。
Type(类型)
:Zuul过滤器的类型,这个类型决定了过滤器在请求的哪个阶段起作用,例如Pre、Post 阶段等。Execution Order (执行顺序)
:规定了过滤器的执行顺序,Order的值越小,越先执行。Criteria (标准)
: Filter 执行所需的条件。Action (行动)
:如果符合执行条件,则执行Action (即逻辑代码)。当一个客户端Request请求进入Zuul网关服务时,网关先进入“pre filter”, 进行一系列的验证、操作或者判断。然后交给“routing filter” 进行路由转发,转发到具体的服务实例进行逻辑处理、返回数据。当具体的服务处理完后,最后由“post filter”进行处理,该类型的处理器处理完之后,将Response信息返回给客户端。
ZuulServlet是Zuul的核心Servlet。 ZuulServlet 的作用是初始化ZuulFilter,并编排这些ZuulFilter的执行顺序。该类中有一个service()方法,执行了过滤器执行的逻辑。
转载地址:http://wopqb.baihongyu.com/