netty面试题及netty权威指南总结 -02

netty中 WebSocket协议的开发

http协议的开销 导致它们不适合用于 低延迟应用。

为了 解决这个问题,WebSocket将网络套接字 引入到 客户端和服务端, 浏览器和服务器之间 可以通过 套接字建立持久的连接, 双方随时都可以 互发数据给对方, 而不是之前的由 客户端控制的一请求 一应答的模式。

 

netty服务端创建时序图:

第一步: 创建 ServerBootStrap实例。 ServerBootStrap是netty服务端的启动辅助类, 它提供了一系列的方法 用于设置 服务端启动相关的参数。

第二步:设置并绑定Reactor线程池, netty的reactor线程池是 EventLoopGroup,实际上是 EventLoop 的数组。 EventLoop的职责是处理所有注册到本线程 多路复用器Selector上的 Channel , Selector的轮询操作 由绑定的EventLoop线程 run方法驱动, 在一个循环体内 循环执行。

 

第三步: 设置并绑定服务端Channel, 作为NIO服务端,需要创建ServerSocketChannel,

Netty对原生的类进行了封装,对应实现是 nioServerSocketChannel。

第四步:链路 建立的时候 创建并初始化ChannelPipeline。 ChannelPipeline 是一个处理网络事件的职责链。

 

第五步: 初始化ChannelPipeline后,添加并设置ChannelHandler。 ChannelHandler 是netty提供给用户定制和扩展的关键接口。

第六步:绑定并启动监听端口。在绑定监听端口之前,系统会做一系列的初始化和检测工作, 完成之后,会启动监听端口, 并将 ServerSocketChannel注册到Selector上 监听客户端连接。

 

第七步:Selector轮询, 由Reactor线程NioEventLoop负责调度和执行Selector轮询操作, 选择准备就绪的Channel集合。

 

第八步:当轮询到准备就绪的Channel之后, 就由 Reactor线程 NioEventLoop执行 ChannelPipeline的相应方法, 最终调度并执行ChannelHandler。

第九步:执行Netty系统 ChannelHandler和用户添加定制的ChannelHandler。 ChannelPipeline根据网络事件的类型,调度并执行ChannelHandler。

 

netty客户端创建时序图:

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值