网络模型
MINA的框架采用了multiple reactors的reactor pattern。mainRector负责acceptor建立新的连接,并把新的连接分配到subRector。在源代码中,acceptor或者mainRector对应于类NioSocketAcceptor,subRector对应类NioProcessor。
图1
MINA的实现
mainRector、subRector各有一个线程池来执行。由于每个rector都会阻塞在Select.select()上面,因此也可以说每个mainRector、subRector对应一个线程。MINA中,mainRector只有一个,默认情况下subRector个数为CPU的个数+1,并且动态生成。mainRector通过轮询的方式为一个新的连接选择一个subRector。
同时,MINA将IO事件分成六类,可以针对某些IO事件配置相关的线程池进行并发处理。
图2
图片1来源:http://hi.youkuaiyun.com/attachment/201106/16/0_1308200578W18r.gif