Java Netty简介

Netty和Mina是Java世界非常知名的通讯框架。它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io(http://netty.io/)。

Netty是一个基于JAVA NIO类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。

 

NIO

Netty 是基于NIO的,那NIO又如何呢?

Java在JDK 1.4版本之后才开始支持异步IO,其实NIO也是使用操作系统的IO模型,但在各操作系统上的实现方式也不太一样

在Windows系统使用的是Select模型,而不是性能更高的IOCP,原因就是并非所有Windows都支持IOCP,IOCP在windows NT 3.5中被引入,只支持WindowsNT和windows 2000。(参考:http://www.cnblogs.com/jobs/archive/2006/11/22/568023.html)

在Linux系统上使用的是多路复用IO,JDK 6之前用的是poll模型,JDK 7中使用epoll。(参考:http://www.cnblogs.com/jobs/archive/2006/11/22/568022.html

AIO

JDK 7中出现了AIO,其实AIO就是NIO的增强版,因为JDK 6之前用的是poll,JDK 7用的是epoll,而epoll就是poll的增强版。

更多操作系统支持的IO模型请参考:

阻塞与非阻塞、同步与异步 I/O模型
http://www.cnblogs.com/ghj1976/p/3764528.html

 

Java NIO原理 图文分析及代码实现
http://weixiaolu.iteye.com/blog/1479656

 

使用Netty的优点

  • 避免之前同步IO的性能缺点;
  • 简化直接使用NIO的复杂度;

更多请参考:

对于 Netty 的十一个疑问
http://mp.weixin.qq.com/s?__biz=MjM5MzA0ODkyMA==&mid=200882593&idx=1&sn=a6ac2c3f3abcaeda478abfc7cd6b1e4f

 

使用Netty的案例

  • Hadoop的RPC框架Avro使用Netty作为通信框架。它默认采用Netty进行跨节点通信,它的Netty Service基于Netty框架二次封装实现。
  • 阿里分布式服务框架Dubbo的RPC框架使用Dubbo协议进行节点间通信。阿里分布式服务框架Dubbo的RPC框架使用Dubbo协议进行节点间通信。

Netty的性能

 

 

Netty系列之Netty高性能之道
http://www.infoq.com/cn/articles/netty-high-performance

NIO系列6:流行 NIO Framework netty 和 mina 性能测评与分析
http://blog.csdn.net/mindfloating/article/details/8622930

tomcat、netty以及nodejs的helloworld性能对比
http://my.oschina.net/lifeofpi/blog/120210

100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
http://www.blogjava.net/yongboy/archive/2013/05/13/399203.html

Java与与Erlang、C相比,比较麻烦的事情,需要在程序一开始就得准备好它的堆栈到底需要多大空间,换个说法就是JVM启动参数设置堆内存大小,设置合适的垃圾回收机制,若以后程序需要更多内存,需停止程序,编辑启动参数,然后再次启动。总之一句话,就是麻烦。单单JVM的调优,就得持续不断的根据检测、信息、日志等进行适当微调。

 

参考资料:

100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
http://www.blogjava.net/yongboy/archive/2013/05/13/399203.html

Netty源码解读(一)概述
http://ifeve.com/netty1/

Netty教程—Part1—介绍
http://www.importnew.com/7669.html

Netty系列之Netty高性能之道
http://www.infoq.com/cn/articles/netty-high-performance

Netty 学习笔记
http://www.cnblogs.com/artist/p/Netty.html

《Netty 权威指南》—— 4种IO的对比
http://ifeve.com/netty-2-5/ 

Netty NIO 框架性能压测 – 长链接
http://www.oschina.net/question/12_8750

原文地址:https://www.cnblogs.com/ghj1976/p/3779820.html