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

本文介绍了Mina框架的核心组件,包括IoAcceptor、IoProcessor和IoSession等,并详细解释了它们之间的交互过程及如何处理客户端连接请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

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

[img]http://dl.iteye.com/upload/attachment/431440/1bc79b44-92e8-3856-bb81-beb5f10814ab.jpg[/img]


[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值