2013年4月3日

再议Netty事件处理流

摘要: Netty是一个基于事件的NIO框架。在Netty中,一切网络动作都是通过事件来传播并处理的,例如:Channel读、Channel写等等。回忆下Netty的流处理模型:Boss线程(一个服务器端口对于一个)---接收到客户端连接---生成Channel---交给Work线程池(多个Work线程)来处理。具体的Work线程---读完已接收的数据到ChannelBuffer---触发ChannelPipeline中的ChannelHandler链来处理业务逻辑。注意:执行 ChannelHandler 链的整个过程是同步的,如果业务逻辑的耗时较长,会将导致Work线程长时间被占用得不到释放,从而 阅读全文

posted @ 2013-04-03 14:30 teamax 阅读(1059) 评论(0) 推荐(0)

Netty拆包和组包的工具类

摘要: Netty应对 拆包与组包,已经有解决方法。netty 有一个包 org.jboss.netty.handler.codec.frame ,这个包里面有三种解决方法,都是对 netty 的 codec 进行的扩展。其中 1.DelimiterBasedFrameDecoder 是利用分隔符来进行包的界定;2.FixedLengthFrameDecoder 是利用固定的长度来进行包的界定;3.LengthFieldBasedFrameDecoder 和 LengthFieldPrepender 是利用在发送数据的时候在里面加上头字段,头字段里面包含了包的长度。 阅读全文

posted @ 2013-04-03 13:56 teamax 阅读(644) 评论(0) 推荐(0)

2013年3月19日

netty中阻塞IO的线程模型

摘要: 一直比较疑惑netty中阻塞IO的线程模型。一般在非阻塞(NioServerSocketChannelFactory)中,Worker 线程的个数是CPU数*2, 也就是说,Worker线程是固定的。但是,如果为阻塞IO的情况下,Worker线程也是如此吗? 经查OioServerSocketChannelFactory 类,发现如下描述:Worker threadsEach connected Channel has a dedicated worker thread, just like a traditional blocking I/O thread model.即:每一个连接通道,. 阅读全文

posted @ 2013-03-19 12:49 teamax 阅读(617) 评论(0) 推荐(0)

导航