nio/mina(五) 构架研究

 

mina基于reactor模式

参考文章:

http://libo20475.blog.163.com/blog/static/27140009200981352836598/  apache mina 研究

http://blog.csdn.net/gaolingep/article/details/4147697   mina研究-源代码

http://developer.51cto.com/art/201103/248125_1.htm    解析mina代码

http://lanmh.iteye.com/blog/1003933   mina工作流程

http://www.doc88.com/p-239796971134.html  mina中文api

mina构架

nio/mina(五) 构架研究_第1张图片

 

IoService:

这个接口抽象了一切io操作,包括建立端口监听,io读写,负责底层通信接入

IoProcessor:

1.为IOService处理正真的I/O读写操作。IOService在某端口监听,当发生int selected = select();时,说明有建立连接的客户端请求,IOService会调用IOProcessor,将session和交给processor处理。
2.IOProcessor也会有一个int selected = select(1000);的阻塞,等待IO事件。
3.当I/O事件到达后,会把输入读入到一个BUF中session.getChannel().read(buf.buf())(Java NIO)。

IoFilter:

1.上面IOProcessor得到buf后,会交给 IOFilter处理,如果是读取IO则触发messageReceived方法。
2.IOFilter一般被包含在一个IoFilterChain中,是实现了责任链模式的一根链条。

IoHandler:(业务处理)

1.是拿到buf做处理的一个接口,是用户最终会面对的一个接口。
2.上面的IOFilter得到buf(以接收数据为例),IOFilter调用了IoHandler的messageReceived(s, message);方法。

 

主要接口

IoAcceptor: 服务端,实现了IoService接口
IoConnector: 客户端,实现了IoService接口
IoProcessor:负责处理IoSession,包括创建,移除,读写事件的处理
IoSession:  客户连接的抽象
IoFilter:   过滤消息或者说(通讯层的)消息处理,IoService与IoHandler间的桥梁
IoHandler:  消息处理

 

基本流程

1当IoService 实例创建的时候,同时一个关联在IoService 上的IoProcessor 池、线程池也被创建;
2当IoService 建立套接字(IoAcceptor 的bind()或者是IoConnector 的connect()方法被调用)时,IoService 从线程池中取出一个线程,监听套接字端口;
3当IoService 监听到套接字上有连接请求时,建立IoSession 对象,从IoProcessor池中取出一个IoProcessor 实例执行这个会话通道上的过滤器、IoHandler;
4当这条IoSession 通道进入空闲状态或者关闭时,IoProcessor 被回收。

http://blog.csdn.net/onafioo/article/details/7912059

很详细,关于mina线程的使用

你可能感兴趣的:(构架研究,nio/mina(五))