Java NIO 图解 Netty 服务端启动的过程
一.启动概述了解整体Netty常用的核心组件后,并且对比了传统IO模式。在对比过程中,找到了传统IO对应Netty中是如何实现的。最后我们了解到在netty中常用的那些组件。
https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-07-17-11-43dOOebh88PoAdVXz.png
本文在了解下这些核心组件的前提下,进一步了解组件如何在整个服务器启动过程如何被创建,如何组件之间配合来使用。首先也是先了解下大概服务端的启动过程,并且在了解过程中我们带着自己的问题去在学习过程中探寻答案。
1.1 启动概述
https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-07-17-11-43woBcWXHJB43n0iFm.png
1.2 启动问题
[*]netty服务端启动是如何设置非阻塞模式的?
[*]服务端启动后事件是如何注册到selector上?
二.启动详述
2.1 channel 创建
还是一样首先在channel创建过程大概有哪些过程
[*]bind
[*]initAndRegister
[*]默认构造函数创建channel
具体调用关系
https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-07-17-11-44IU11TKLbm0qMskHY.png
时序图中从1,2,3步都好理解。
2.1.1 创建channelFactory
从类的反射得到channel这里是一个关键点需要说明:
https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-07-17-11-44qiSTY07gsbYkOyf.png
图中直接使用channelFactory来实现了channel的实例化.那么就按图索骥这个channelFactory是什么时候赋值的。
https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-07-17-11-45O8hpRq5757f9uawZU.png
图中我们一步步找到channelFactory的路径。我们再看第三步是谁调用了
channel(Class
页:
[1]