Zuul 一些简单概念

一.什么是网关:

实现统一入口,接收所有的请求,并根据定义的规则转发到相应的服务上。
在此过程中还可以完成系统中一些通用统一的工作,如权限校验,限流等。
Zuul就是NetFlix提供的一个服务网关,用于实现路由、过滤器等功能(Zuul是异步阻塞模型)。
Gateway 也是服务网关(非阻塞模型)。

通俗一点来说,就是对服务提供一层保护,对外界的请求进行过滤转发到后端服务中。

这里我们可以通过几张简单的示例图来进行了解.。

1.1 不适用网关的实例图:
在这里插入图片描述

1.2 使用网关的示例图:

在这里插入图片描述

我们发现加了网关之后,实际上是将一对 N 的关系转变成了一对一的关系,用户只需跟网关打交道就好了,这样的好处是我们可以在网关层进行数据合法校验、权限认证、负载均衡等统一处理,这样可以在很大的程度上节省的人力和物力。

二. Zuul 的功能(Zuul可以理解伟过滤器

Zuul可以理解伟过滤器

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

三. Zuul的工作原理

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

Zuul 包括以下4中过滤器:

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

Zuul 过滤器具有以下关键特性:

  1. Type(类型):pre,routing,post,error
  2. Execution Order(执行顺序):规定了过滤器的执行顺序,Order的值越小,越先执行。
  3. Criteria(标准):过滤器执行所需的条件。
  4. Action(行动): 如果符合执行条件,则执行Action(即逻辑代码)

四. Zuul的生命周期

在这里插入图片描述
当一个客户端Request 请求进入 Zuul 网关服务时,

  1. 网关先进入"pre filter",进行一系列的验证、操作或者判断。
  2. 然后交给 “routing filter” 进行路由转发,转发到具体的服务实例进行逻辑处理、返回数据。
  3. 当具体的服务处理完后,最后有"post filter" 进行处理,处理完后将Response信息返回给客户端。
  4. 如果以上3步出现了异常,就会进入"error filter"的过滤器,"error filter"返回结果给请求客户端.
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘德华一不小心就打代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值