Mina 代码分析2 (主框架代码)

Mina暴露给开发者的接口主要是IoAcceptor(服务器端)或者IoConnector(客户端)。Mina内部具体是怎么实现侦听,处理连接的呢?我们先来介绍一下Mina的方法哲学或者说术语吧。

IoSession 

    IoSession:   IoSession是一个客户连接的抽象,整个通讯框架可以说,都是围绕着IoSession工作的。
    IoAcceptor:  初始化服务器,用的就是它
    IoProcessor: 负责处理IoSession,包括创建,移除,读写事件的处理
    IoFilter:    过滤消息或者说消息处理(通讯层的)
    IoHandler:   消息处理(应用逻辑层的)


通讯层的核心类,事实上是IoAcceptor,IoProcessor,IoSession。在这里我们只分析IoAcceptor模式,也就是服务器端的代码。客户端的代码与此类似,大家可以自己研究。

首先,调用IoAcceptor.bind()方法时,服务器已经初始化完毕,这时服务器就在指定的端口上开始侦听客户端发来的连接请求。

当IoAcceptor侦听到客户端请求时,它就会把这个请求交给IoProcessor进行处理。然后IoAcceptor回去继续侦听。显然,IoAcceptor的工作流程就是 侦听 --> 传递请求 --> 继续侦听。

IoProcessor得任务则是处理这些连接的IO事件。显然IoProcessor不可能和IoAcceptor在同一个线程里运行。他们两个分工不同,可以并发执行。Mina内部事实上维护了一个IoProcessor对象池,对象池的默认大小是CPU个数+1.也就是说,如果你的机器是4核的,可能就有5个IoProcessor(可以理解为线程)同时工作。

看看下面的示意图吧,一图胜千言:

Mina 代码分析2 (主框架代码)_第1张图片




你可能感兴趣的:(工作,框架,应用服务器,Mina)