zuul入门(4)zuul的注解@EnableZuulServer和@EnableZuulProxy

@EnableZuulServer、@EnableZuulProxy两个注解

@EnableZuulProxy简单理解为@EnableZuulServer的增强版,当Zuul与Eureka、Ribbon等组件配合使用时,我们使用@EnableZuulProxy。

RequestContext:用于在过滤器之间传递上下文,如:请求路由到哪里、错误、HttpServletRequest、HttpServletResponse,数据保存在每个请求的ThreadLocal中。

一、@EnableZuulServer过滤器

1、pre类型过滤器

(1) ServletDetectionFilter:该过滤器用于检查请求是否通过Spring Dispatcher。检查后,通过isDispatcherServletRequest设置布尔值。

(2) FormBodyWrapperFilter:解析表单数据,并为请求重新编码。

(3) DebugFilter:顾名思义,调试用的过滤器,可以通过zuul.debug.request=true,或在请求时,加上debug=true的参数,例如$ZUUL_HOST:ZUUL_PORT/path?debug=true开启该过滤器。这样,该过滤器就会把RequestContext.setDebugRouting()、RequestContext.setDebugRequest()设为true。

2、route类型过滤器

SendForwardFilter:该过滤器使用Servlet RequestDispatcher转发请求,转发位置存储在RequestContext.getCurrentContext().get("forward.to")中。可以将路由设置成:

  1. zuul:
  2. routes:
  3. abc:
  4. path: /abc/**
  5. url: forward:/abc

然后访问$ZUUL_HOST:ZUUL_PORT/abc,观察该过滤器的执行过程。

3、post类型过滤器

SendResponseFilter:将Zuul所代理的微服务的响应写入当前响应。

4、error类型过滤器

SendErrorFilter:如果RequestContext.getThrowable()不为null,那么默认就会转发到/error,也可以设置error.path属性修改默认的转发路径。

二、@EnableZuulProxy过滤器

如果使用注解@EnableZuulProxy,那么除上述过滤器之外,Spring Cloud还会增加以下过滤器:

1、pre类型过滤器

PreDecorationFilter:该过滤器根据提供的RouteLocator确定路由到的地址,以及怎样去路由。该路由器也可为后端请求设置各种代理相关的header。

2、route类型过滤器

(1) RibbonRoutingFilter:该过滤器使用Ribbon,Hystrix和可插拔的HTTP客户端发送请求。serviceId在RequestContext.getCurrentContext().get("serviceId")中。该过滤器可使用不同的HTTP客户端,例如

Apache HttpClient:默认的HTTP客户端

SquareupOkHttpClient v3:如需使用该客户端,需保证com.squareup.okhttp3的依赖在classpath中,并设置ribbon.okhttp.enabled = true。

Netflix Ribbon HTTP client:设置ribbon.restclient.enabled = true即可启用该HTTP客户端。需要注意的是,该客户端有一定限制,例如不支持PATCH方法,另外,它有内置的重试机制。

(2) SimpleHostRoutingFilter:该过滤器通过Apache HttpClient向指定的URL发送请求。URL在RequestContext.getRouteHost()中。

时间: 2024-10-08 07:25:32

zuul入门(4)zuul的注解@EnableZuulServer和@EnableZuulProxy的相关文章

服务网关zuul之七:zuul中的动态刷新路由配置

Spring cloud使用/refresh端点手动刷新配置 一 介绍很多场景下,需要在运行期间动态调整配置.如果配置发生了修改,微服务也应该实现配置的刷新.下面实现配置的手动刷新.二 新建项目microservice-config-client-refresh三 为项目添加spring-boot-starter-actuator依赖,该依赖包含了/refresh端点,用于配置的刷新. <dependencies> <dependency> <groupId>org.s

zuul入门(3)过滤器

Zuul大部分功能都是通过过滤器来实现的.Zuul中定义了四种标准过滤器类型,这些过滤器类型对应于请求的典型生命周期. (1) PRE:这种过滤器在请求被路由之前调用.我们可利用这种过滤器实现身份验证.在集群中选择请求的微服务.记录调试信息等. (2) ROUTING:这种过滤器将请求路由到微服务.这种过滤器用于构建发送给微服务的请求,并使用Apache HttpClient或Netfilx Ribbon请求微服务. (3) POST:这种过滤器在路由到微服务以后执行.这种过滤器可用来为响应添加

zuul入门(2)zuul 的关键组件和用途

1.ContextLifecycleFilter 2.ZuulServlet 接收请求 ZuulServlet类似SpringMvc的DispatcherServlet,所有的Request都要经过ZuulServlet的处理,因此ZuulServlet是zuul框架源码分析的入口点. zuul逻辑的入口是ZuulServlet.service(ServletRequest servletRequest, ServletResponse servletResponse). RequestCont

zuul入门(5)zuul的过滤器加载

一.Groovy编写的Filter 1.可以放到指定目录加载 创建一个pre类型的filter,在run方法中获取HttpServletRequest 然后答应header信息 在代码中加入groovy编译器,间隔10秒扫描一次groovy文件,其代码如下: <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <ver

zuul入门(4-1)zuul

https://my.oschina.net/u/3300636/blog/851984 netflix zuul 是netflix开发的一个API Gateway 服务器,可以实现安全,流量控制等功能. Zuul1.x的实现原理基本是一个Servlet 应用. 具体例子可以参考 netflix 在github上的 simple webapp,可以按照netflix 在github wiki 上文档说明来进行使用. 1.StartServer 2.ZuulServlet 3.ContextLif

Spring Cloud入门教程 - Zuul实现API网关和请求过滤

简介 Zuul是Spring Cloud提供的api网关和过滤组件,它提供如下功能: 认证 过滤 压力测试 Canary测试 动态路由 服务迁移 负载均衡 安全 静态请求处理 动态流量管理 在本教程中,我们将用zuul,把web端的请求/product转发到对应的产品服务上,并且定义一个pre过滤器来验证是否经过了zuul的转发. 基础环境 JDK 1.8 Maven 3.3.9 IntelliJ 2018.1 Git 项目源码 Gitee码云 创建Zuul服务 在IntelliJ中创建一个ma

服务网关zuul之四:zuul网关配置

禁用过滤器在Zuul中特别提供了一个参数来禁用指定的过滤器,该参数的配置格式如下:zuul.AccessFilter.pre.disable=true动态加载动态路由通过结合Spring Cloud Config的动态刷新机制,可以是实现动态刷新路由规则的功能.动态过滤器对于实现请求过滤器的动态加载,我们需要借助JVM实现的动态语言的帮助,比如Groovy.

mybatis 详解(三)------入门实例(基于注解)

1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如下 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 3.在 MyBatisTest 工程中添加数据库配置文件 mybatis-configuration.xml 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 4.定义表所对应的实体类 详情

spring3.1.1入门讲解二(注解篇)

在第一篇博客中主要讲解了如何搭建spring框架和运行示例项目:在本篇文章中主要讲解如何采用注解的方式简化开发! 一.准备篇-jar包的准备 这里就不详细说明了详见上一篇博客--spring3.1.1入门讲解一(非注解篇)中的准备篇讲解 二.环境搭建篇 1.在web.xml文件中添加的配置跟上一篇的配置代码一样,直接复制过去就行了. 2.配置spring-mvc.xml,重点就在这里 重点配置如下: 1).如果像我们采用非注解的方式去创建和访问controller控制器时,我们都需要在sprin