Mina-2.0.7源码学习 (2)

  最近在网络上有看一些Mina相关的学习资料,相比之下他们都写得太好,差点没勇气坚持下去,csdn账号创建了很多年,却从没心思好好学习下技术写个博客,最近工作了才开始写博客,只能安慰自己慢慢来吧,好记性不如记博客,就当写给自己看总可以吧得意

  言归正传,咱先借用一张Mina的框架图:


  是不是经常看到?但这里先讲个生活中的例子,将对Mina架构的理解会很有启发的,最近刚刚工作老跑银行办事儿的感悟:

  现在去银行办事儿应该都要先排个号儿吧,记得以前老家在机器上直接按一下就能拿个号码然后去排队,自从参加工作来到一线城市居然有人专门问你需要什么服务(修改密码啊,修改绑定手机号儿啊,开卡啊),先填写个单子,然后才给你个号码,最后老老实实排队去,排到你了才去找柜台处理,难道一线城市退化啦,呵呵。其实不然,先且不说为什么如此,想想曾经看过的古装剧里边儿基本上主角去钱庄什么的办事儿都是直接找前台,接待和办事儿柜台小二都替你办了,干净利索,但是前提主角光环在,还没几个跑龙套的敢出现在主角前面让主角排队等一段时间。回到现在,等到排到你的时候,直接把之前填写好的单子交给柜台妹子,经过一系列手续之后(有时候需要站在里面的自诩威严的大妈主任盖个章子,然后再由柜台美女整合处理交给你),办完收到一张复印件回执,打个perfect评价,走人。

  对此你有没有什么感悟?类比我们去银行办事儿,就好比一个连接请求来到Mina服务端,客户就是一个连接请求,这个请求专门由大堂接待人员Acceptor来负责接待,然后创建一个Session(填写单子得到排队号)去排队(放入到ConcurrentLinkedQueue),排到你了(从ConcurrentLinkedQueue中取出来Session)发配给某个柜台小妹(Processor)专门给你处理业务,与此同时大堂接待Acceptor和柜台小妹Processor处理完一个就轮询Poll下一个。回到柜台小妹Processor,你说明是要存钱取钱修改信息什么什么的(有的已经在之前的单子上填写好了,直接从之前填写的单子Session中得到信息),好比我要取钱(读请求),柜台小妹接受到你的请求之后,肯定要你出示身份证验证你是否是坏人(IoFilter 1),然后(如果是存钱)用机器数一下多少张并验一下真伪(IoFilter 2),有时候还需要找来大妈主任盖个授权章子(IoFilter 3),经过一系列业务流程的处理(IoFilterChain)最后都通过,才会在电脑上处理把你存了多少或者取了多少记到你的账户上(IoHandler),然后盖各种章子在一张复印件上面(反向IoFilter)交给你,你收到单子之后给个好评,系统记录对柜台小妹的服务评价(IoHandler)作为业绩考核指标。

  Mina和普通的NIO对比,就好比现代的银行和古代的钱庄办事流程,不评价他们的好与坏,它们都是顺应某个特定时代需求的产物。

  接着,还是回到源代码,按照源码的包结构如下【参考】:

用于缓冲区的IoBuffer

org.apache.mina.core.buffer

用于提供连接的service

org.apache.mina.core.service

org.apache.mina.transport.*

用于提供两端状态的session

org.apache.mina.core.session

用于拦截所有IO事件和请求的filter chain和各类拦截器filter(在IoServiceIoHandler之间)

org.apache.mina.core.filterchain

org.apache.mina.filter.*

用于处理IO事件的handler

org.apache.mina.handler.*

用于实现异步IO操作的 future

org.apache.mina.core.future

用于实现IO轮询的的polling

org.apache.mina.core.polling

用于实现代理的proxy

org.apache.mina.proxy.*

  接下来将主要按照上面列出的包讲解API,刚开始练习记博客,本人主要参考借鉴开源中国@Gaischen的关于Mina的文章,加上自己的理解,慢慢学习改善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值