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) 编辑 收藏