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 閱讀(480)
評論(0) 編輯 收藏