路由网关组件Zuul

断了今生、忘了曾经 提交于 2019-12-19 03:02:52
  1. 为什么需要智能路由网关组件Zuul:
    Zuul 作为路由网关组件,在微服务架构中有着非常重要的作用,主要体现在以下6 个方面。
    口 Zuul 、Ribbon 以及Eureka 相结合,可以实现智能路由和负载均衡的功能, Zuul 能够将请求流量按某种策略分发到集群状态的多个服务实例。
    口 网关将所有服务的API 接口统一聚合,并统一对外暴露。外界系统调用API 接口时,都是由网关对外暴露的API 接口,外界系统不需要知道微服
    务系统中各服务相互调用的复杂性。微服务系统也保护了其内部微服务单元的API 接口, 防止其被外界直接调用,导致服务的敏感信息对外暴露。
    口 网关服务可以做用户身份认证和权限认证,防止非法请求操作API 接口,对服务器起到保护作用。
    口 网关可以实现监控功能,实时日志输出,对请求进行记录。
    口 网关可以用来实现流量监控, 在高流量的情况下,对服务进行降级。
    口 API 接口从内部服务分离出来, 方便做测试。

  2. Zuul的工作原理:

    Zuul 是通过Servlet 来实现的, Zuul 通过自定义的Zuu!Servlet (类似于Spring MVC 的。路由到具体的微服务实例。在默认情况下,它使用
    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 的执行顺序。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!