你对netty的理解?
Netty是封装了JDK的NIO,是一个异步事件驱动的网络应用框架,用于快速开发可维护的高性能服务端和客户端。
Nio编程
Nio编程的概念是由io编程引发出来的,在传统的io模型中,每个连接创建成功之后都需要一个线程来维护,每个线程都会创建一个死循环去监听这个连接,这样线程资源十分受限,如果同一时刻有大量线程处于阻塞状态,资源严重浪费,操作系统消耗不起。这样线程频繁切换线程效率会急剧下降。为了解决这些问题引出了Nio模型。
NIo模型就是有一个Selector的作用,一个连接来了之后,不去创建死循环线程去监听这个连接,而是直接把这个连接注册到Selector上,然后通过Selector批量检测出连接线程的数据。
为什么使用netty而不使用jdk原生的?
1.原生的编程复杂,不易维护
2、Netty底层IO模型随意切换,只需要很少改动就可以切换到其他模型。
3、Netty自带的异常检测机制可以让我们只关心业务逻辑。
4、Netty社区活跃,遇到问题比较容易解决。
5、Netty自带的Selector线程模型可以非常高效的并发处理。
6、Netty已经经历过各大RPC框架、消息中间件的广泛验证,健壮性无比强大。
Netty的启动流程
先创建ServerBootStrap实例,然后定义线程池,之后创建CHannel,之后把channel和线程池和ServerBootStrap实例绑定注册,然后绑定端口启动,最终调度并执行新连接