Zuul

目录

概况

内部架构

工作原理

1、过滤器机制

2、过滤器生命周期

源码分析

应用


概况

Git:https://github.com/Netflix/zuul

官方文档:https://docs.spring.io/spring-cloud-netflix/docs/2.2.5.RELEASE/reference/html/#router-and-filter-zuul

Zuul是netflix开源的一个API Gateway服务器,本质为web servlet应用,但在SpringCloud组件中已经停止更新。

启动类注解:@EnableZuulProxy

pom:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

配置:

zuul:
  # 一些比较敏感的请求头,不想通过zuul传递过去, 可以通过该属性进行设置
  sensitiveHeaders: ''
  #添加代理头
  add-proxy-headers: true
  #  debug:
  #    request: true
  #  include-debug-header: true
  retryable: false
  servlet-path: /         # 默认是/zuul , 上传文件需要加/zuul前缀才不会出现乱码,这个改成/ 即可不加前缀
  ignored-services: "*"   # 忽略eureka上的所有服务
  #  prefix: /api #为zuul设置一个公共的前缀
  #  strip-prefix: false     #对于代理前缀默认会被移除   故加入false  表示不要移除
  routes:  # 路由配置方式
    authority: # 其中 authority 是路由名称,可以随便定义,但是path和service-id需要一一对应
      path: /authority/**
      serviceId: authority-server
    oauth:
      path: /oauth/**
      serviceId: oauth-server
    demo:
      path: /demo/**
      serviceId: demo-server

内部架构

image

工作原理

1、过滤器机制

Zuul核心为一系列的filters。filter之间没有直接的相互通信,通过一个RequestContext的静态类来进行数据传递的。RequestContext类中有ThreadLocal变量来记录每个Request所需要传递的数据。Zuul的过滤器是由Groovy写成,这些过滤器文件被放在Zuul Server上的特定目录下面,Zuul会定期轮询这些目录,修改过的过滤器会动态的加载到Zuul Server中以便过滤请求使用。

Zuul中定义了四种标准过滤器类型,这些过滤器类型对应于请求的典型生命周期:

  • PRE:这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。
  • ROUTING:这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求,并使用Apache HttpClient或Netfilx Ribbon请求微服务。
  • POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。
  • ERROR:在其他阶段发生错误时执行该过滤器。

内置的特殊的过滤器,分别为:StaticResponseFilter和SurgicalDebugFilter

StaticResponseFilter:StaticResponseFilter允许从Zuul本身生成响应,而不是将请求转发到源。

SurgicalDebugFilter:SurgicalDebugFilter允许将特定请求路由到分隔的调试集群或主机。

还可以自定义的过滤器

除了默认的过滤器类型,Zuul还允许我们创建自定义的过滤器类型。

 

2、过滤器生命周期

 

image

源码分析

//TODO

 

应用

  • 动态路由
  • 安全验证
  • 监控审记
  • 负载分配
  • 弹性限流

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值