Apache mina工作流介绍apache mina的整体工作流程包含了几个重要的概念和组件,分别是IoService,IoProcessor,IoHandler和IoFilter,在弄清楚整体的运作流程之前需要先介绍下各个组件各自的作用。IoService这个是mina...
Apache mina工作流介绍
apache mina的整体工作流程包含了几个重要的概念和组件,分别是IoService,IoProcessor,IoHandler和IoFilter,在弄清楚整体的运作流程之前需要先介绍下各个组件各自的作用。
IoService
这个是mina请求接受器(Acceptor)以及连接器(Connector)的一个抽象的父类,作用就是提供连接和接受请求的服务。
IoProcessor
请求处理器,负责请求的处理工作,包括监听事件的更改,filterChain的建立,响应事件的调用(sessionCreated、sessionOpened、messageRecieved等)以及IO读写操作。
IoHandler
IoHandler其实就是负责响应事件对应处理的,不管是来自于IoService还是IoProcessor的响应事件发生时,都会调用到IoHandler里面的对应的处理方法,这部分是留给开发者去继承然后覆写。
IoFilter
IoFilter是过滤器,其实就是一个装饰者模式,开发者继承这个接口然后实现对应的方法,例如sessionCreated、sessionOpened、messageRecieved等等,然后在这些方法里面加入自己的工作代码,然后调用NextFilter.sessionCreated等等来将调用在filterChain里面传递下去。
流程
整体的流程就是开启IoService,如果是Acceptor那么就是开一个监听的服务,然后当有请求到来的时候会将请求对应到一个session,分配相应的sessionid,然后将session分配给多个子Processor中的一个去处理,而processor会再处理过程中,发出事件响应调用,例如sessionCreated、sessionOpened、messageRecieved等等,事件响应调用会沿着IoFilterChain一直传递,最后到IoHandler去处理。
mina的NIO模式
mina采用了java的NIO来处理IO操作,并且整体的设计框架采用的是主Reactor+多个子Reactor+ThreadPool的模式,主Reactor用来监听请求,然后接受请求,这里采用了线程池模型,然后子Reactor用来处理请求,也采用了线程池模型。一次请求会封装成一个session,每次请求的session都是不同的,会将session根据sessionid对默认的Processor数目求余来分配session给Processor,然后每个processor通过线程池的方式去处理session对应的请求。
这种模式具有很好地适应性,能根据实际的运行环境来合理的配置子Reactor的数目以及线程池的大小。其中默认的Reactor数目是处理器核心数目+1。
原文:http://blog.csdn.net/liupc123123/article/details/38757785
本文标题为:Apache mina流程分析
- IIS搭建ftp服务器的详细教程 2022-11-15
- 解决:apache24 安装后闪退和配置端口映射和连接超时设置 2023-09-11
- CentOS7安装GlusterFS集群的全过程 2022-10-10
- CentOS_mini下安装docker 之 安装docker CE 2023-09-23
- KVM虚拟化Linux Bridge环境部署的方法步骤 2023-07-11
- nginx中封禁ip和允许内网ip访问的实现示例 2022-09-23
- 【转载】CentOS安装Tomcat 2023-09-24
- 利用Docker 运行 python 简单程序 2022-10-16
- 教你在docker 中搭建 PHP8 + Apache 环境的过程 2022-10-06
- 阿里云ECS排查CPU数据分析 2022-10-06