当前位置: 首页 > wzjs >正文

福清市城乡建设局网站网站备案营业执照

福清市城乡建设局网站,网站备案营业执照,免费企业网站源码生成,做网站用那个浏览器Spring Cloud Gateway 的执行链路详解 🎯 核心目标 明确 Spring Cloud Gateway 的请求处理全过程(从接收到请求 → 到转发 → 到返回响应),方便你在合适的生命周期节点插入你的逻辑。 🧱 核心执行链路图(执…

Spring Cloud Gateway 的执行链路详解


🎯 核心目标

明确 Spring Cloud Gateway 的请求处理全过程(从接收到请求 → 到转发 → 到返回响应),方便你在合适的生命周期节点插入你的逻辑。


🧱 核心执行链路图(执行顺序)

┌──────────────┐
│ 客户端请求   │
└────┬─────────┘↓
┌────┴─────────────┐
│ Netty HttpServer │ ←→ Reactor Netty(非阻塞)
└────┬─────────────┘↓
┌────┴────────────┐
│ HttpRoutePredicateEvaluator │ 路由匹配
└────┬────────────┘↓
┌────┴────────────┐
│ GlobalFilter Chain       │ ← 【你做定制的核心入口】
│  ├── GlobalFilter (Ordered)
│  ├── CustomFilter
│  └── FilterChain
└────┬────────────┘↓
┌────┴────────────┐
│ WebClient 调用目标服务  │(负载均衡、路由转发)
└────┬────────────┘↓
┌────┴────────────┐
│ 响应处理(过滤器链倒序) │
└────────────┬────┘↓客户端收到响应

🔄 Gateway 核心处理流程分阶段讲解


🔹 1. 请求接入:Netty 接收

  • Gateway 使用 Reactor Netty 构建 Server,所有请求是异步 + 非阻塞处理。
  • 请求通过 HttpServer 被接收并封装成 ServerWebExchange 对象(封装 request + response + 路由信息 + 上下文等)。

🔹 2. Route 匹配阶段(断言匹配)

配置文件中的路由定义,如:

spring:cloud:gateway:routes:- id: user_routeuri: http://user-servicepredicates:- Path=/api/user/**

这一步是通过 RoutePredicateHandlerMapping 完成:

✅ 判断当前请求路径是否匹配配置中的 predicates

📌 你可以实现 RoutePredicateFactory 来定制更复杂的匹配规则,例如 IP、请求头、时间段等


🔹 3. 全局过滤器链(GlobalFilter)执行阶段

这是你进行自定义操作的核心切入点

内置常用过滤器有:
过滤器类名作用顺序(order)
RemoveRequestHeaderGatewayFilter删除请求头-1
AddRequestHeaderGatewayFilter添加请求头0
RetryGatewayFilter自动重试-2
RequestRateLimiterGatewayFilter限流(结合 Redis)-10
HystrixGatewayFilter熔断降级-100

你也可以实现自己的 GlobalFilterGatewayFilterFactory

示例:自定义 GlobalFilter
@Component
@Order(-1) // 顺序越小越先执行
public class AuthGlobalFilter implements GlobalFilter {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {String token = exchange.getRequest().getHeaders().getFirst("Authorization");if (!StringUtils.hasText(token) || !checkToken(token)) {// 拦截请求,返回 401exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();}return chain.filter(exchange); // 放行}
}

🔹 4. 网关调用下游服务(转发阶段)

  • 实际调用目标服务(通过 WebClient 发出请求)
  • 如果配置了 lb:// 前缀,会使用 Spring Cloud LoadBalancer 做负载均衡(Nacos、Eureka 都支持)
uri: lb://order-service

🔹 5. 响应返回时的处理(倒序执行 Filter)

在响应返回时,全局过滤器链会逆序执行,可以在这里做一些响应增强:

  • 添加响应头
  • 日志记录(返回码、耗时)
  • 数据脱敏
  • 响应体改写(结合缓存)

示例:记录响应耗时

@Component
@Order(1)
public class TimeLogFilter implements GlobalFilter {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {long start = System.currentTimeMillis();return chain.filter(exchange).then(Mono.fromRunnable(() -> {long cost = System.currentTimeMillis() - start;System.out.println("接口请求耗时:" + cost + "ms");}));}
}

🔧 常见自定义操作建议位置对照表

功能推荐实现方式说明
请求日志记录GlobalFilter获取 request 信息,记录 URI/参数/IP
参数校验(如签名)GlobalFilter拦截非法请求
JWT 鉴权GlobalFilter可选使用 Reactor 模式解析 token
限流(IP/QPS)Redis + 自定义 Filter或使用 Spring 官方限流 Filter
熔断降级Resilience4j/Hystrix可集成入 Gateway Filter
黑名单拦截GlobalFilter + Redis校验 IP 是否在黑名单
响应体改写RewriteResponseBodyFilter需要缓存响应流
请求体改写RewriteRequestBodyFilter非常规操作,需 cache request body

📌 注意事项:Netty + 响应式陷阱

Spring Cloud Gateway 是响应式编程,与传统 Servlet 不一样:

注意点说明
Request Body 只能读取一次需要使用 CachedBodyOutputMessage 缓存
Response 体也只能写一次修改响应需用 BodyInserter
操作是异步链式的推荐使用 Mono.defer()then() 等操作链
使用 @Order 控制顺序值越小越早执行,如认证应在最前面执行

🎁 Bonus:完整请求链源码入口参考(Spring Cloud Gateway)

模块类名说明
spring-cloud-gatewayGatewayAutoConfiguration自动装配
RoutePredicateHandlerMapping匹配路由
FilteringWebHandler核心过滤链执行器
GlobalFilter全局过滤器接口
GatewayFilterFactory局部路由过滤器工厂接口
http://www.dtcms.com/wzjs/822932.html

相关文章:

  • 做网站用c 还是php网站设置反爬虫的主要原因
  • 成都网站建设公司浅谈wordpress环境需求
  • 怎么用wix做网站有没有免费装修设计的网站
  • 网站开发与运营方向和企业管理方向wordpress公司展示网站模板
  • 网站建设专业开发公司网站建设采用thinkphp框架的优势
  • 制作网站一般要多少钱郑州建设厅网站
  • 佛山网站的优化天津网站建设多少钱
  • 专业网站建设最便宜wordpress博客主机
  • 南京高新区网站建设二级建造师考试
  • 丹徒网站建设包括哪些给别人做软件的网站
  • 南宁网站seo顾问小程序制作二维码签到
  • 自己在网站做邮箱电子商务 做网站
  • 移动互联网网站开发百度指数数据分析平台入口
  • 用什么自己做网站吗个人注册一个小公司要多少钱
  • 百度网站链接提交页面为什么两学一做进不去网站
  • 福建漳州网站建设公司广州网页制作网站维护
  • 青岛网站开发费用建网站设
  • 知道网站域名怎么联系网页设计作业一般多少钱
  • 鹤壁网站开发静安郑州阳网站建设
  • 门户网站建设经验总结报告7k7k游戏网页版入口
  • 汕头设计网站建设从头建设个人网站步骤
  • AWS免费套餐做网站可以吗和建设银行类似的网站
  • 虚拟主机怎么设计网站吗wordpress制作app插件
  • 专业的东莞网站推广工程建设开工网站信息
  • 网站设计的优点免费做手机网站建设
  • 德州市建设小学网站免费正能量不良网站推荐
  • 做网站的工作量wordpress 迅搜
  • 昆明二级站seo整站优化排名全国甲级建筑设计院名单
  • 主机屋vps网站助手代运营公司排行榜
  • 医疗网站建设代理商网站没被百度收录