posts - 66,  comments - 40,  trackbacks - 0

Netty2: 事件驱动的NIO框架

Netty 2 提供了一组很容易的基于事件的API(类似于Swing)来开发高性能, 可管理的TCP/IP服务端或客户端应用程序. 对于要求建立高性能的的网络应用来说,Netty提供许多基本特性,像readiness selection, 线程池, 写缓冲DoS的预防, 可重用的缓冲等.

特性:

* 基于事件的API: Netty处理所有低级I/O调用
* 信息格式与工作流程是相互独立的
* 以面向对象的方式实现通讯协议
* Java NIO
* 内建线程池
* 字节缓冲池
* 可自定的事件分发: 具有弹性的线程调度
* '写缓冲溢出'的预防:
??? * 侦测过慢的客记端
??? * 清除已发送信息,避免资源不足
* JMX兼容: 线程池和公共配置就是MBean.

架构:

* I/O Processor执行I/O操作, 将它们解释为session事件, 并传递到EventDispatcher.
* EventDispatcher分发事件到相关的SessionListeners.
* 读信息总是调用MessageRecognizer来从socket通道读取送来的数据, 从而识别出相关信息对象。

Message接口:

在Netty中,Message是通讯的基本单位。它提供了read和write方法来存取缓冲中的信息。

MessageRecognizer接口:

通过前面的架构图我们知道Netty的工作是基于Session的。当条件成立的,session会自动触发相应的I/O事件,在session内部,当数据收到时,I/O工作线程会调用MessageRecognizer的recognize(ByteBuffer buf)方法,从字节重组得到Message对象。然后再触发messageReceived事件。所以如果你定义了自己的消息格式,还要实现MessageRecognizer接口来将缓冲区中接收到的字节码重组为你的Message格式。

接收Message:

为了方便,这里没有画出MessageRecognizer。

发送Message:

 

posted on 2006-06-20 19:40 happytian 阅读(477) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Welcome here, my friend!

常用链接

留言簿(12)

随笔档案(66)

文章分类

文章档案(63)

web

最新随笔

搜索

  •  

积分与排名

  • 积分 - 88673
  • 排名 - 646

最新评论

阅读排行榜

评论排行榜