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