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上。