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
.
相关文章
- 了解下 Kuberentes Gateway API
- Spring Cloud实战|整合Gateway-网关还能这么整?
- Gateway网关简介及使用
- 抖音API接口_抖音榜单数据api接口
- gateway网关详解_天翼网关扩展wifi
- Sentinel + Gateway 在网关统一流控
- 关于Spring Cloud Gateway与下游服务器的连接分析
- 关于 SAP Gateway 响应头部 Last Modified 字段的赋值逻辑
- istio-in-action - 04 使用 istio Gateway 允许外部访问
- Spring Cloud Gateway解决跨域问题
- Spring Cloud Gateway的概念和背景
- Spring Cloud Gateway路由规则的匹配和优先级(一)
- Spring Cloud Gateway 过滤器的分类
- Spring Cloud Gateway负载均衡-加权随机策略
- Spring Cloud Gateway限流(二)
- 使用 Spring Cloud Gateway 进行微服务架构的 API 网关实践
- Linux图形界面API:开启简单而强大的开发之旅(linux图形界面api)
- Linux编程API探索之旅(linux编程api)
- API连接MySQL数据库实现快速灵活的数据存取(api连mysql数据库)
- API精准查询Oracle,轻松解决问题(Api查询oracle)
- Redis读写分离API实现提升效率(redis读写分离api)