0606-Zuul构建API Gateway-Zuul过滤器以及禁用Zuul过滤器
一、概述
针对Spring Cloud的Zuul配备了许多在代理和服务器模式下默认启用的ZuulFilter bean。
有关启用的可能过滤器,请参阅zuul过滤器包。
二、Zuul过滤器使用
2.1、传统过滤器:java.servlet.Filter
package javax.servlet; import java.io.IOException; public interface Filter { public void init(FilterConfig filterConfig) throws ServletException; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException; public void destroy();
}
2.2、ZuulFilter过滤器类型与生命周期
Zuul大部分功能是同过过滤器实现。有四种:
1》PRE,在请求被路由之前调用,可利用这种过滤器实现身份认证、在集群中选择请求的微服务、记录调试信息等
2》ROUTING,这种过滤器将请求路由到微服务。用于构建发送给微服务的请求,并使用apache httpclient或Netfilx Ribbon请求微服务
3》POST,在路由到微服务以后执行,可用来为响应添加标准的HTTP HEADER、收集统计信息和指标,将响应从微服务发送个客户段等
4》ERROR,在其他阶段发生错误是、时执行该过滤器
参看地址:http://techblog.netfilx.com/2013/06/announcing-zuul-edge-service-in-cloud.html
https://github.com/Netflix/zuul/wiki/how-it-works
生命周期图
2.3、代码开发
PreZuulFilter
package com.lhx.cloud; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext; public class PreZuulFilter extends ZuulFilter {
private static final Logger log = LoggerFactory.getLogger(PreZuulFilter.class); @Override
public Object run() {
// 具体执行
HttpServletRequest request = RequestContext.getCurrentContext().getRequest();
String host = request.getRemoteHost();
PreZuulFilter.log.warn("请求主机:" + host);
return null;
} @Override
public boolean shouldFilter() {
// 是否执行次过滤器
return true;
} @Override
public int filterOrder() {
// 执行顺序 ,数值越大 越后执行
return 1;
} @Override
public String filterType() {
// 执行类型
return "pre";
}
}
注意要将被类扫描进去
@Bean
public PreZuulFilter pre() {
return new PreZuulFilter();
}
2.4、参看代码
包:spring-cloud-netflix-core-1.4.4.RELEASE.jar下的zuul的filter
2.5、禁用Zuul的Filter
禁用过滤器:zuul.<SimpleClassName>.<filterType>.disable=true
按照惯例,过滤器后面的包是Zuul过滤器类型。示例禁用 org.springframework.cloud.netflix.zuul.filters.post.SendResponseFilter
设置zuul.SendResponseFilter.post.disable=true
.
0606-Zuul构建API Gateway-Zuul过滤器以及禁用Zuul过滤器的更多相关文章
- 聊聊 API Gateway 和 Netflix Zuul
最近参与了公司 API Gateway 的搭建工作,技术选型是 Netflix Zuul,主要聊一聊其中的一些心得和体会. 本文主要是介绍使用 Zuul 且在不强制使用其他 Neflix OSS 组件 ...
- 【记录】API Gateway作用? 与过滤器的区别?Nginx与Zuul区别?
网关(gateway)的作用: 网关可以拦截客户端所有请求,对该请求进行权限控制.负载均衡.日志管理.接口调用监控等 过滤器与网关的区别是什么? 过滤器是拦截单个tomcat服务器请求. 网关是拦截整 ...
- API Gateway性能比较:NGINX vs. ZUUL vs.Cloud Gateway vs. Linkerd[译]
2018-03-04 15:07 联发科的反思 前几天拜读了 OpsGenie 公司(一家致力于 Dev & Ops 的公司)的资深工程师 Turgay elik 博士写的一篇文章(链接在 ...
- 0603-Zuul构建API Gateway-通过Zuul上传文件,禁用Zuul的Filter
一.通过Zuul上传文件 参看地址:https://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_ ...
- SpringCloud学习笔记(6):使用Zuul构建服务网关
简介 Zuul是Netflix提供的一个开源的API网关服务器,SpringCloud对Zuul进行了整合和增强.服务网关Zuul聚合了所有微服务接口,并统一对外暴露,外部客户端只需与服务网关交互即可 ...
- 使用springcloud zuul构建接口网关
一 微服务网关背景及简介 不同的微服务一般有不同的网络地址,而外部的客户端可能需要调用多个服务的接口才能完成一个业务需求.比如一个电影购票的收集APP,可能回调用电影分类微服务,用户微服务,支付微服 ...
- spring cloud 入门系列六:使用Zuul 实现API网关服务
通过前面几次的分享,我们了解了微服务架构的几个核心设施,通过这些组件我们可以搭建简单的微服务架构系统.比如通过Spring Cloud Eureka搭建高可用的服务注册中心并实现服务的注册和发现: 通 ...
- 纠错帖:Zuul & Spring Cloud Gateway & Linkerd性能对比 (转载)
纠错帖:Zuul & Spring Cloud Gateway & Linkerd性能对比 Spring Cloud Spring Cloud Spring Cloud Gatew ...
- 第七章 API网关服务:Spring Cloud Zuul
API网关是一个更为智能的应用服务器, 它的定义类似于面向对象设计模式中的Facade模式, 它的存在就像是整个微服务架构系统的门面一样,所有的外部客户端访问都需要经过它来进行调度和过滤.它除了要实现 ...
随机推荐
- 网络相关命令-netstat
网络相关命令 netstat显示网络状态 usage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help} ne ...
- Spider Studio 新版本 (x-mas) - 可以引入第三方程序集, 可以将脚本生成为DLL
Merry X'mas! Spider Studio本年度最后一次重大更新发生在圣诞节, 又是一次美好的巧合 :) 本次更新主要包含两个重要功能: 1. 引入第三方程序集 在"设置" ...
- 素数 + 背包 - SGU 116. Index of super-prime
Index of super-prime Problem's Link Mean: 如果一个素数所在的位置还是素数,那么这个素数就是超级素数,比如3在第2位置,那么3就是超级素数. 现在给你一个数,求 ...
- 第二百五十五节,Bootstrap项目实战--关于
Bootstrap项目实战--关于 html <!DOCTYPE html> <html lang="zh-cn"> <head> <me ...
- MyBatis 是一款优秀的持久层框架
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...
- css -- hover伪类
CSS代码: .btn-setDefaultGateway{display: none;} .netDiv:hover span .btn-setDefaultGateway { display: i ...
- springcloud微服务架构搭建
SpringCloud微服务框架搭建 一.微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通 ...
- LPCTSTR —— 摘自百度百科
LPCTSTR用来表示字符是否使用UNICODE. 如果程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串. 类型理解:L,表示 ...
- uva624 CD (01背包+路径的输出)
CD Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice UVA 624 ...
- 利用flume+kafka+storm+mysql构建大数据实时系统
架构图