netty简介
Netty是由JBOSS提供的基于Java NIO的开源框架,Netty提供异步非阻塞、事件驱动、高性能、高可靠、高可定制性的网络应用程序和工具,可用于开发服务端和客户端。
netty 可以实现:
- HTTP服务器
- FTP服务器
- UDP服务器
- RPC服务器
- WebSocket服务器
- Redis的Proxy服务器
- MySQL的Proxy服务器
传统HTTP服务器的实现
- 1、创建一个ServerSocket,监听并绑定一个端口
- 2、一系列客户端来请求这个端口
- 3、服务器使用Accept,获得一个来自客户端的Socket连接对象
- 4、启动一个新线程处理连接
- 4.1、读Socket,得到字节流
- 4.2、解码协议,得到Http请求对象
- 4.3、处理Http请求,得到一个结果,封装成一个HttpResponse对象
- 4.4、编码协议,将结果序列化字节流 写Socket,将字节流发给客户端
- 5、继续循环步骤 3
HTTP服务器之所以称为HTTP服务器,是因为编码解码协议是HTTP协议。如果协议是Redis协议,那它就成了Redis服务器,如果协议是WebSocket,那它就成了WebSocket服务器,等等。
使用Netty你就可以定制编解码协议,实现自己的特定协议的服务器
原生JDK存在的问题:
- 1、API复杂
- 2、要对多线程很熟悉:因为NIO涉及到Reactor模式
- 3、高可用的话:需要出路断连重连、半包读写、失败缓存等问题
- 4、JDK NIO的bug
为什么选择Netty
- API使用简单,更容易上手,开发门槛低
- 功能强大,预置了多种编解码功能,支持多种主流协议
- 定制能力高,可以通过ChannelHandler对通信框架进行灵活地拓展
- 高性能,与目前多种NIO主流框架相比,Netty综合性能最高
- 高稳定性,解决了JDK NIO的BUG
- 经历了大规模的商业应用考验,质量和可靠性都有很好的验证
来源:CSDN
作者:Li_Pine
链接:https://blog.csdn.net/DevelopAndroid/article/details/104009076