Spring WebFlux 网络请求底层处理流程
2021-03-24 11:31:54 0 举报
Spring webflux 集成 Netty 服务器源码流程
作者其他创作
大纲/内容
9. new TcpServerBootstrap()
18. intiChannel()
2. startHttpServer()
new 创建
14. BootstrapHandlers.childConnectionObserver()
ChannelOperations
12.5.2 根据 HTTP 协议版本不同,用于初始化 Netty Channel 的类不同。以 HTTP 1.1 为例,其初始化配置为 Http1Initializer,会被包装为 PipelineConfiguration,最后添加到 BootstrapPipelineHandler 中
10. bind()
26. listener().onStateChange() 回调上层处理
HttpServerOperations
12.5.2 updateConfiguration()
TcpServerBind
12.5.2 new Http1Initializer()
12.4.1 该步骤非常关键,通过该步骤将 HttpServerHandle 包装成 ConnectionObserver,后续会将其注册到 Netty 的 ChannelHandler 中监听数据交互
new ServerBootstrap()
23. bind() 保存该对象
6.2. bootstrap()
22. new 新建
5. 子类 tcpConfiguration()
6.1.3 createServerBootstrap()
BootstrapPipelineHandler
7. 需注意此时 bind() 方法入参的 TcpServer 对象实际是 TcpServerBootstrap
24. ctx.fireChannelRead()
7. 调用子类 bind()
3.1 this.httpServer.handle(this.handlerAdapter)
12.5.3 设置 Netty 从 Reactor 的数据出入站处理器
12.4.2 childOption()
Netty 框架启动过程中初始化触发
3.2 bindNow()
new HttpServerHandle()
6.1.2 new TcpServerBind()
调用父类 tcpConfiguration()
19. ChannelOperations.addReactiveBridge()
PiplineConfiguration
调用父类 bootstrap() 方法
BootstrapHandlers
bindNow()
HttpServerBind
HttpServer
12.5.1 进入 Netty 框架主从 Reactor 配置阶段
12.3 source.configure()
Http1Initializer
17. Netty 主从 Reactor 绑定启动
18. 将ConnectionObserver 监听器注册到各个处理器中
NettyWebServer
ChannelOperationsHandler
13.1 source.configure() 类似,source.bind() 链式调用最后调到 TcpServerBind
channel 可读 触发
调用父类方法 bindNow()
12.5.2 getOrCreateInitializer() h获取实例
TcpServerOperator
父类方法
新建 HttpServerHandle 实例时将 HttpServerBind 实例和上层作为处理器的 HttpHandler 保存下来
21. channelRead()
12.5.1 b.group().channel()
6.2.1 new TcpServerBootstrap()
20. new ChannelOperationsHandler()
1. start()
channelRead()
12.1 source.configure()
12.5.3 b.childHandler()
12.2 步骤 6.2.1 创建的TcpServerBootstrap 对象 configure() 方法被调
4. bind()
12.5.2 BootstrapHandlers.updateConfiguration()
12.4.1 BootstrapHandlers.childConnectionObserver()
13. 子类实现 bind()
14. 该步骤找到 12.4.1 步骤保存的 ConnectionObserver15. 该步骤将 ConnectionObserver 监听器保存到初始化处理器中
新建处理器并将其添加到 pipeline 中
遍历配置 pipelineConfiguration.consumer.accept()
BootstrapInitializerHandler
17. bootstrap.bind()
7. source.bind()
TcpServerBootstrap
6.1 source.tcpConfiguration()
13.1 source.bind()
6.1.1 create()
HttpTrafficHandler
12. 调用子类 configure()
HttpServerOperator
Netty服务器实现,其成员变量HttpServer 为底层IO处理,ReactorHttpHandlerAdapter为上层的HttpHandler的适配器
TcpServer
12.5 bootstrapMapper.apply()
11. 调用父类 bind()
需注意,步骤 6.2.1 创建的 TcpServerBootstrap 对象的 source 属性为 TcpServerBind 对象,步骤 9 创建的 TcpServerBootstrap 对象保存的 source 属性为步骤 6.2.1 创建的 TcpServerBootstrap 对象,此处形成链式结构
16. new BootstrapInitializerHandler()
ServerBootstrap
8. delegate.bootstrap()
12.4 bootstrapMapper.apply()
15. BootstrapHandlers.finalizeHandler()
调用 accept()
25. ops.onInboundNext()
调用父类 handle()
HttpServerHandle
0 条评论
下一页