`
eric_weitm
  • 浏览: 243565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring cloud gateway 分析一 主流程和层次

 
阅读更多

一、debug的调用栈如下:

DispatcherHandler.handle(ServerWebExchange) line: 149

DefaultWebFilterChain.lambda$filter$0(ServerWebExchange) line: 79

1774625216.get() line: not available

MonoDefer<T>.subscribe(CoreSubscriber<? super T>) line: 45

MonoPeekTerminal<T>.subscribe(CoreSubscriber<? super T>) line: 61

MonoFlatMap$FlatMapMain<T,R>.onNext(T) line: 150

MonoZip$ZipCoordinator<R>(Operators$MonoSubscriber<I,O>).complete(O) line: 1083

MonoZip$ZipCoordinator<R>.signal() line: 247

MonoZip$ZipInner<R>.onNext(Object) line: 329

Operators$ScalarSubscription<T>.request(long) line: 1640

MonoZip$ZipInner<R>.onSubscribe(Subscription) line: 318

MonoJust<T>.subscribe(CoreSubscriber<? super T>) line: 54

MonoJust<T>(Mono<T>).subscribe(Subscriber<? super T>) line: 3080

MonoZip<T,R>.subscribe(CoreSubscriber<? super R>) line: 128

MonoFlatMap<T,R>.subscribe(CoreSubscriber<? super R>) line: 60

MonoDefer<T>.subscribe(CoreSubscriber<? super T>) line: 53

MonoDefer<T>.subscribe(CoreSubscriber<? super T>) line: 53

MonoPeekTerminal<T>.subscribe(CoreSubscriber<? super T>) line: 61

MonoPeekFuseable<T>.subscribe(CoreSubscriber<? super T>) line: 74

MonoDefer<T>.subscribe(CoreSubscriber<? super T>) line: 53

MonoDefer<T>.subscribe(CoreSubscriber<? super T>) line: 53

MonoOnErrorResume<T>.subscribe(CoreSubscriber<? super T>) line: 44

MonoOnErrorResume<T>.subscribe(CoreSubscriber<? super T>) line: 44

MonoOnErrorResume<T>.subscribe(CoreSubscriber<? super T>) line: 44

MonoOnErrorResume<T>(Mono<T>).subscribe(Subscriber<? super T>) line: 3080

MonoIgnoreThen$ThenIgnoreMain<T>.drain() line: 172

MonoIgnoreThen<T>.subscribe(CoreSubscriber<? super T>) line: 56

MonoPeekFuseable<T>.subscribe(CoreSubscriber<? super T>) line: 70

MonoPeekTerminal<T>.subscribe(CoreSubscriber<? super T>) line: 61

HttpServerOperations(ChannelOperations<INBOUND,OUTBOUND>).applyHandler() line: 380

HttpServerOperations.onHandlerStart() line: 398

522293148.run() line: not available

AbstractEventExecutor.safeExecute(Runnable) line: 163

NioEventLoop(SingleThreadEventExecutor).runAllTasks(long) line: 404

NioEventLoop.run() line: 465

SingleThreadEventExecutor$5.run() line: 884

DefaultLoopResources$EventLoop(Thread).run() line: not available

 

二、说明:从下到上依次是

1、netty的主事件循环

2、reactive接管网络事件的消息处理 HttpServerHandler extends ChannelDuplexHandler

3、通过reactive 内部的异步mono封装 HttpServerOperations把流程代理给spring的webflux

4、webflux 通过 org.springframework.web.server.handler.DefaultWebFilterChain 回调DispatcherHandler

 

三、几个jar包之间的关系

1、reactor-netty reactor对netty的封装

2、

reactor-core 核心flux和mono的封装

reactor-extra 数学、cache等的扩展

reactive-stream

3、spring-web 统一对http的基本数据结构和HttpHandler进行抽象

4、spring-webflux 基于reactor,用DispatcherHandler来映射请求到method

 

 

tips: @FunctionalInterface可以使用lambda表达式创建自定义的接口

分享到:
评论

相关推荐

    springcloud Gateway网关-压测用.zip

    这个名为"springcloud Gateway网关-压测用.zip"的压缩包包含了一个用于性能测试的配置,目的是评估和优化Gateway的处理能力。下面我们将深入探讨SpringCloud Gateway的相关知识点,以及如何使用性能测试工具进行压测...

    最新Spring Cloud Gateway 官方参考指南-中文版-3.x

    Spring Cloud Gateway 是一款基于Spring生态系统构建的API网关,它主要设计用于提供一种简单而有效的方式来路由API,并为API提供核心关注点,如安全性、监控/度量和弹性。在3.1.3版本中,它利用了Spring Boot 2.x、...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    3. **定制Filter**:在Spring Cloud Gateway中,我们可以自定义WebFlux Filter,利用Spring Security提供的API进行认证和鉴权。这通常涉及到`@PreAuthorize`和`@Secured`等注解的使用,以控制对特定路由的访问权限。...

    springcloud gateway 全局过滤器统一签名判定.doc

    下面将详细介绍如何配置和使用Spring Cloud Gateway实现这一功能。 首先,我们需要了解Spring Cloud Gateway的基本结构。它是Spring Cloud生态中的一个API网关服务,提供路由、熔断、限流等能力,可以作为所有...

    springcloud下通过gateway转发websocket

    在IT行业中,Spring Cloud Gateway作为Spring Cloud生态体系中的一个关键组件,被广泛用于构建微服务架构中的API网关。这个框架允许我们集中处理各种请求,包括路由、过滤、安全等,极大地简化了服务间的通信。而...

    Spring Cloud Gateway的全局异常处理

    Spring Cloud Gateway作为一款基于Spring Framework 5、Project Reactor和Spring Boot 2.0构建的云原生网关框架,它提供了强大的路由转发能力和灵活的过滤器模型,能够很好地满足微服务网关的各种需求。然而,在实际...

    spring cloud gateway 例子

    Spring Cloud Gateway 是一款基于 Spring Framework 5 和 Spring Boot 2 设计的云原生微服务网关,它旨在提供一种简单而有效的方式来对 API 进行路由,同时提供了过滤器功能,可以进行权限验证、限流、日志记录等...

    Spring Cloud Eureka + Spring Cloud Gateway + Spring Cloud Zipkin

    项目中包含的SpringCloud中文文档将为开发者提供详细的指导,帮助他们理解和使用这些组件。文档通常会涵盖安装配置、基本使用、高级特性以及最佳实践等内容,是学习和实施微服务架构的重要参考资料。 总之,Spring ...

    spring cloud gateway配置Hystrix 熔断、限流、后台调用注意点.pdf

    Spring Cloud Gateway 是一种基于 Spring Boot 框架的 API 网关解决方案,提供了许多实用的功能来管理和保护微服务架构中的 API。其中,Hystrix 熔断、限流和后台调用是 Spring Cloud Gateway 的三个关键组件,本文...

    Spring Cloud Gateway 2.1 使用手册中文版.pdf

    这个项目提供了一个构建在 Spring 生态系统之上的 API 网关,包括:Spring 5,Spring ... Spring Cloud Gateway 旨在提供一种简单而有效的 API 路 由方式,并为其提供横切关注点,例如:安全,监控/指标和弹性。

    spring cloud zookeeper gateway

    Spring Cloud Zookeeper Gateway 是一个基于Spring Cloud生态系统的项目,它结合了Zookeeper作为微服务注册中心和Spring Cloud Gateway作为服务网关的解决方案。这个项目旨在为开发者提供一个快速搭建微服务架构的...

    SpringCloudGateway2.1使用手册中文版.rar

    在使用 SpringCloudGateway2.1 使用手册中文版时,你可以找到关于如何配置路由、使用过滤器、集成服务发现、安全设置等方面的详细指导。手册中应该会包含以下内容: 1. **快速入门**:介绍如何创建基本的 Spring ...

    详解SpringCloud Finchley Gateway 统一异常处理

    详解 SpringCloud Finchley Gateway 统一异常处理 SpringCloud Finchley Gateway 统一异常处理是指在使用 SpringCloud Finchley 版本的 Gateway 时,如何统一处理系统级异常的方法。默认情况下,SpringCloud ...

    spring-cloud-gateway-demo.zip

    Spring Cloud Gateway 是一款基于 Spring Framework 5 和 Spring Boot 2 设计的现代化微服务路由网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。在本示例 "spring-cloud-gateway-demo.zip" 中...

    基于Nacos实现Spring Cloud Gateway实现动态路由的方法示例

    总的来说,结合Nacos和Spring Cloud Gateway实现动态路由,是微服务架构中的一种高效解决方案,它增强了系统的灵活性和可维护性。通过不断学习和实践,开发者可以更好地理解和掌握这种技术,提升自身在分布式系统...

    spring cloud gateway跨域实现

    Spring Cloud Gateway 是Spring官方推出的一款现代化的网关服务,它构建于Spring Framework 5、Project Reactor 和 Spring Boot 2之上,提供了高性能、易用的API路由管理、过滤器等功能,是Spring Cloud生态中的重要...

    CVE-2022-22947-Spring-Cloud-Gateway 内存马POC

    Spring官方博客发布了一篇关于Spring Cloud Gateway的CVE报告,据公告描述,当启用和暴露 Gateway Actuator 端点时,使用 Spring Cloud Gateway 的应用程序可受到代码注入攻击。攻击者可以发送特制的恶意请求,从而...

    SpringCloud Finchley Gateway 缓存请求Body和Form表单的实现

    在构建微服务架构时,Spring Cloud Gateway作为API网关,起着至关重要的作用。它提供了路由、过滤器等功能,能够方便地对上游请求进行处理和转发。然而,有些场景下,我们可能需要缓存请求的Body(如JSON数据)或...

    Spring Cloud Gateway模块

    Spring Cloud Gateway模块

    springcloud gateway

    Spring Cloud Gateway 是一个基于 Spring Framework 5 和 Spring Boot 2 构建的微服务网关,它是 Spring Cloud 生态系统中的重要组件,旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它作为一个高可...

Global site tag (gtag.js) - Google Analytics