一、什么是Netty
在网络编程领域,Netty是Java的卓越框架。它驾驭了Java高级API的能力,并将其隐藏在一个易于使用的API之后。Netty使你可以专注于自己真正的业务。简单的说,Netty是一个让网络编程变得简洁的框架,实现了真正的异步非阻塞,性能及其优越。
二、为什么选择Netty
通常,如果用NIO来实现一个服务端需要以下步骤。
- 创建ServerSocketChannel,配置它为非阻塞模式;
- 绑定监听,配置TCP参数,例如backlog大小;
- 创建一个独立的I/O线程,用于轮询多路复用器Selector;
- 创建Selector,将之前创建的ServerSocketChannel注册到Selector上,监听SelectionKey.ACCEPT;
- 启动I/O线程,在循环体中执行Selector.select()方法,轮询就绪的Channel;
- 当轮询到了处于就绪Channel时,需要对其进行判断,如果是OP_ACCEPT状态,说明是新的客户端接入,则调用ServerSocketChannel.accept()方法接受新的客户端;
- 设置新接入的客户端链路SocketChannel为非阻塞模式,配置其他的一些TCP参数;
- 将SocketChannel注册到Selector,监听OP_READ操作位;
- 如果轮询的Channel为OP_READ,则说明SocketChannel中有新的就绪的数据包需要读取,则构造ByteBuffer对象,