Netty简介
Netty 是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。
Netty 是javar 卓越框架,它驾驭了Java的高级API的能力。
Netty 的特性总结
分类 | Netty 的特性 |
设计 |
统一的API,支持多种种传输类型, 阻塞的和非阻塞的 简单而强大的线程模型 真正的无连接数据报套接字支持 连接逻辑组件以支持复用 |
易于使用 |
详实的javadoc 和大量的示例 不需要超过JDK1.6 |
性能 |
拥用比Java的核心API更高的吞吐量以级更低的 延迟 得益于池 |
健壮性 |
不会因为慢速,快速或者超载的连接而导致 OutofMemoryError 消除在高速网络中NIO 应用程序常见的不公平读/写比率 |
安全性 |
完整的SSL、TLS以 及StartTLS 支持 可用于受限环境下,如Applet 和OSGI |
社区驱动 | 发布快速而且频繁 |
相关资料
Netty源码在线阅读:
Netty-4.1.x地址是:http://docs.52im.net/extend/docs/src/netty4_1/
Netty-4.0.x地址是:http://docs.52im.net/extend/docs/src/netty4/
Netty在线API文档:
Netty-4.1.x API文档(在线版):http://docs.52im.net/extend/docs/api/netty4_1/
Netty-4.0.x API文档(在线版):http://docs.52im.net/extend/docs/api/netty4/
Netty 的特点
Netty 对 JDK 自带的 NIO 的 API 进行了封装,解决了上述问题。
Netty的主要特点有:
1)设计优雅
2)使用方便
3)高性能、吞吐量更高:延迟更低;减少资源消耗;最小化不必要的内存复制。
4)安全:完整的 SSL/TLS 和 StartTLS 支持。
5)社区活跃、不断更新:社区活跃,版本迭代周期短,发现的 Bug 可以被及时修复,同时,更多的新功能会被加入。
使用 Netty 能够做什么?
- 开发异步、非阻塞的 TCP 网络应用程序;
- 开发异步、非阻塞的 UDP 网络应用程序;
- 开发异步文件传输应用程序;
- 开发异步 HTTP 服务端和客户端应用程序;
- 提供对多种编解码框架的集成,包括谷歌的 Protobuf、Jbossmarshalling、Java 序列化、压缩编解码、XML 解码、字符串编解码等,这些编解码框架可以被用户直接使用;
- 提供形式多样的编解码基础类库,可以非常方便的实现私有协议栈编解码框架的二次定制和开发;
- 基于职责链模式的 Pipeline-Handler 机制,用户可以非常方便的对网络事件进行拦截和定制;
- 所有的 IO 操作都是异步的,用户可以通过 Future-Listener 机制主动 Get 结果或者由 IO 线程操作完成之后主动 Notify 结果,用户的业务线程不需要同步等待;
- IP 黑白名单控制;
- 打印消息码流;
- 流量控制和整形;
- 性能统计;
- 基于链路空闲事件检测的心跳检测
Netty 常见使用场景
Netty 常见的使用场景如下:
1)互联网行业
2)游戏行业
3)大数据领域:经典的 Hadoop 的高性能通信和序列化组件 Avro 的 RPC 框架,默认采用 Netty 进行跨界点通信,它的 Netty Service 基于 Netty 框架二次封装实现。