1. 程式人生 > >IOServer開源專案介紹及原始碼分析

IOServer開源專案介紹及原始碼分析

IOServer是國人寫的一個仿MINA的輕量級伺服器框架。最近因為使用MINA的緣故,閱讀了IOServer的原始碼,順便熟悉了J2SE NIO部分。

IOServer的設計目標是手機網遊伺服器框架。支援TCP協議。

這個框架的使用方法和MINA類似;它有一個ProtocolHandler和IOHandler,沒有MINA的FilterChain;

基本的流程是:建立Config,設定埠、ProtocolHandler和IOHandler;啟動伺服器。非常方便。

IOServer定義了一個NetMessage類,要求所有的業務類都實現該介面。

IOServer中最核心的有三個類:IOServiceImpl、IOReadWriteMachine和IOSession;

IOServiceImpl會使用NIO輪詢serversocket,當伺服器埠有新的連線時,接收連線並建立iosession;

IOReadWriteMachine使用NIO輪詢該Machine負責的客戶端socket,當某個socket有資料進來時,呼叫對應的IOSession來讀取解析資料;當某個socket有資料要傳送時,呼叫對應的IOSession的傳送方法;

IOSession:讀取資料,並呼叫ProtocolHandler和IOHandler處理這些資料;當快取佇列中有資料要傳送時,傳送它。

需要說明:

IOServiceImpl和IOReadWriteMachine的關係:

IOServiceImpl只負責處理伺服器埠;

IOReadWriteMachine由IOReadWriteMachineManager管理;有幾個CPU,就有幾個IOReadWriteMachine;並將IOSession平均分配在每個CPU上。