读书人

关于NIO的议论

发布时间: 2012-08-25 10:06:20 作者: rapoo

关于NIO的讨论

MINA使用系列I/O线程处理读和写,这是很多典型NIO框架的手法。但是Netty要比MINA聪明得多,当发送Queue中是空的,Netty将直接发送数据,不再例行公事放入Queue中,如果发送Queue不是空的,Netty将这个数据放入队列,这时类似MINA做法。所以,Netty要快些?

?

我对种说法的评价是: 说了等于没说,兄弟还需努力。

?

最后,再说一下Netty的一个缺点,

大家看到这,发现我都没有提到读数据的情况,Netty读数据也是用Poller线程在读,

不管Acceptor放入多少个Socket,全是Poller线程在一个个地读,

把读到的数据放到Buffer后会触发MessageEvent事件(Netty是一个纯正的事件驱动框架,这是Tomcat、Jetty这类业余选手望尘莫及的),

此时会调用ChannelUpstreamHandler这类处理器的messageReceived方法,

messageReceived方法中的代码通常是业务相关的,但是执行messageReceived方法的线程却是Poller线程,

所以只要在messageReceived这种地方出现问题,比如有个Thead.sleep调用或者出现无限循环,

那么此时Netty跟死了没分别,Poller线程无法往下走了,所有Task都没法处理了。

1 楼 ahgf 2011-02-21 "之后去了Jboss",Trustin Lee应该没有去Jboss吧,只不过是Apache mina的其中一个开发者去了jboss,并且继续开发Netty。
Mina确实不错,我开发的一个应用,上线2个月了,服务一次没重启过,当然了,每天的业务量不是太多,但相比以前用直接用NIO类库开发的一个应用要好多了,欢迎大家继续交流Mina和Netty。

读书人网 >软件架构设计

热点推荐