Netty是什么?
一个开源的基于NIO的客户、服务器端编程框架
需要了解的io模型
bio:一请求一应答,缺乏弹性伸缩性,N个请求过来就会有N个线程来应对。
伪异步io:由线程池负责处理。 N个请求过来M个线程来应对。大量请求可能会阻塞。
nio: 引入缓冲区buffer 读写数据第一步都是和buffer进行交互。
引入通道channel,和流不同,通道是双向的。可用于读写,甚至二者同时进行。
引入多路复用器Selector,不断地轮询注册的Channel,Channel相应的事件发生话,就处于就绪状态,进入后续的io操作。jdk使用的epoll(后续了解下) 可接入非常多的客户端请求。
(非阻塞同步)
aio:连接注册读写事件和回调函数。读写异步,主动通知程序。不需要轮询。(非阻塞异步)
为什么要使用Netty?
使用原生nio太复杂,入门门槛高,工作量大,jdk nio bug 空轮询。
今天看了一个Netty实现Websocket的例子:
Netty实现WebSocket
这是模仿慕课网上的一个案例,可以看出Netty的API使用起来是相当的方便。