• MinaService


    3710684617977243578.jpg

    (1) IoService:一类I/O服务,是对于服务器端接受连接和客户端发起连接两类行为的一个抽象。

    • 1个IoService对应N个sessions(共用1个IoHandler), 1个IoService还可对应N个IoServiceListener.
    • TransportMetaData(底层元数据信息)、IoServiceListener(见下)、IoHandler(见下)、IoSession(见下)、broadcast
    • IoService接口可以用来添加多个IoFilter,这些IoFilter符合责任链模式并由IoProcessor线程负责调用。

    (2) IoServiceListener,是IoService的忠实监听器

    • 监听与该IoService相关的所有事件。
    • 例如,服务被激活、服务闲置、服务被销毁、会话创建、会话销毁等。

    ======================================================

    小结:(1)与(2)是service层面的。

    ======================================================

    (3) IoProcessor,大管家,负责调会话过滤器和IoHandler进行具体处理

    • 用于为IoSession执行具体的I/O操作。一个Processor可以对应N个IoSessions,一个IoSession总是对应一个IoProcessor。
    • IoProcessor在另一个线程上负责检查是否有数据在通道上读写,也就是说它也拥有自己的Selector,这是与我们使用JAVA NIO 编码时的一个不同之处,通常在JAVA NIO 编码中,我们都是使用一个Selector,也就是不区分IoService与 IoProcessor 两个功能接口。另外,IoProcessor 负责调用注册在IoService上的过滤器,并在过滤器链之后调用IoHandler。例如,add()用于将指定会话加入到IoProcessor,让它负责处理与此会话相关的所有I/O操作。
    • 例如,加session、删session、更改session、向session里强写数据、更新trafficControle信息

    (4)  IoHandler: I/O事件真正得到处理的地方

    • Mina中的所有I/O事件,最终都是由IoHandler来处理的,这些事件都是由IoProcessor发出来的,处理IoService手下所有sessions的事件handler。最终都会进入的,业务层最终进行处理的地方。
    • 例如,会话创建、会话打开、会话关闭、会话闲置、消息收到/发出、

    ======================================================

    小结:(3)与(4)是IoSession层面的,调用次序有先后。

    ======================================================

    (5) IoSession: 会话

    • 每个会话都有一个过滤器链(IoFilterChain),通过IoFilterChainBuilder来负责构建
    • 会话相关的数据通过IoSessioanDataStructureFactory来提供,每个会话都有一张AttributeMap和WriteRequestQueue。
    • 如果说IoService/IoProcessor负责连接的生死、事件的转发,那具体的执行还是在具体的IoSession当中的,详见新博文。

    [洞庭散人的Mina源码详解,讲的非常不错]http://www.cnblogs.com/phinecos/archive/2008/12/03/1347052.html

    [偶尔发现了这个,mark一下]http://2006zhouxinfeng.blog.163.com/blog/static/5024021620115155106736/

  • 相关阅读:
    Python中的生成器与yield
    【爬虫系列】(一)最简单的爬虫
    【刷题笔记】--lintcode木头加工(java)
    使用TaskManager爬取2万条代理IP实现自动投票功能
    开源任务管理平台TaskManager介绍
    数据字典生成工具之旅系列文章导航
    使用工具安装,运行,停止,卸载Window服务
    Quartz Cron表达式 在线生成器
    Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle
    .net core2.0下Ioc容器Autofac使用
  • 原文地址:https://www.cnblogs.com/alipayhutu/p/2478050.html
Copyright © 2020-2023  润新知