Netty框架
新版本:3.0.2.GA,于2008年11月19日发布。
Netty项目致力于提供一个异步的、事件驱动的网络应用框架和工具,用于快速开发可维护的、高性能的、高扩展性的服务器和客户端之间的协议。换句话说,Netty式一个NIO客户端服务器框架,能够快速、轻松地开发网络应用例如服务器和客户端间的协议。它简化了网络编程如TCP/IP socket服务器。
JBOSSes Netty的设计吸取了大量的协议如FTP、SMTP、HTTP和各种二进制、基于文本的继承协议等协议的设计经验,成功地找到了一种方法实现易于开发、性能、稳定、灵活的协议开发。
特征:
Netty为用户提供了很多创新和更好的网络开发体验。
1)设计Design
为各种传输类型(块和非块socket)提供了统一的API;
建立在灵活和可扩展的事件模型;
高度可定制的线程模式——单线程,一个或多个线程池(如SEDA);
可信的五连接数据报socket支持。
2)易于使用
良好文档化的Javadoc、用户向导和例子;
结构并不臃肿;
无其它的依赖,只需JDK1.5或以上。
3)性能
高吞吐量、低延迟时间;
很小的资源消耗;
最小化不必要的内存复制。
4)健壮性
不会因为快速连接、慢速连接或超载连接引起OutOfMemoryError错误;
高速网络下不会引起NIO程序的读写异常。
5)安全
完全支持SSL/TLS和StartTLS;
在Java Applet环境下运行正常。
6)社区
至少每两周一个版本发布。
项目主页: http://www.jboss.org/netty/
文档地址: http://www.jboss.org/netty/documentation.html
下载地址: http://www.jboss.org/netty/downloads.html
//评论
性能有时候不是最主要的, 轻量级的容器也是很需要的, 比如Netty。
老兄一看就是有经验的高手。
我后来也把 NIO 改成 OIO 的实现,性能要高出了10-20%左右,但是要根据应用情况调整一下 ThreadPool 的数量。这一点很符合你的说法。
我感觉对代码再精简、优化一下应该还会有性能的提升,不过暂时没时间去做了,等有时间再去试试。
我感觉这个测试中最宝贵的经验是 Netty NIO 在 keep-alive 的情况下性能相当的卓越,可以在很多的场景中利用这个特性。
性能有时候不是最主要的, 轻量级的容器也是很需要的, 比如Netty。