Apache 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

时间: 2024-08-04 00:43:15

Apache mina流程分析的相关文章

Apache Mina 2.x 框架+源码分析

源码下载 http://www.apache.org/dyn/closer.cgi/mina/mina/2.0.9/apache-mina-2.0.9-src.tar.gz 整体架构 核心过程(IoAcceptor 与 IoConnector通讯) 客户端: 1)通过SocketConnector同服务器端建立连接. 2)链接建立之后I/O的读写交给了I/O Processor线程,I/O Processor是多线程的. 3)通过I/O Processor读取的数据经过IoFilterChain

图解Apache Mina

Apache MINA 是一个用于简化开发构建高性能.高可扩展的网络应用框架.通过JAVA NIO在各种传输协议(如:TCP/IP.UDP/IP)上提供抽象的事件驱动异步API Apache MINA可以称为:NIO框架库.服务端客户端框架库.一个网络套接字库 特性 为各种传输协议提供统一API 提供类似servlet filter的过滤链路支持 可定制化线程模型 开箱即用的 SSL · TLS · StartTLS 超载保护和传输流量控制 易于集成(如:与Spring集成) 可平滑过渡到Net

Linux系统启动流程分析与关机流程

Linux 系统启动流程分析 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端. 用户登录系统. init程序的类型: SysV: init, CentOS 5之前, 配置文件: /etc/inittab. Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf. Systemd: systemd, CentOS 7,配置文件: /usr/lib/

Apache Mina

初步接触RPC通信框架,目前有很多优秀的RPC框架,今天我参考该博文:http://www.cnblogs.com/xuekyo/archive/2013/03/06/2945826.html 学习了Aapche Mina通信框架.博主介绍的非常详细,包括Mina的源码流程,这里通过阅读博主的文章进行了学习记录,方便以后需要时使用. Apache Mina 是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可扩展性的网络应用程序.它提供了一个通过Java NIO在不同的传输例如TCP/IP

网络通信框架Apache MINA

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 MINA 版本支持基于 Java NIO 技术的TCP/UDP 应用程序开发.串口通讯程序. Mina 的应用层: 一个设计成熟的开源框架,总是会仅可能的减少侵入性,并在整个项目中找到合适的位置,而不应对整个项目的构架设计产生过多的影响,图 1 就是 MIN

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

Apache Mina框架实践

1.为什么要用Apache Mina框架 ApacheMina Server 是一个网络通信应用框架,Mina 可以帮助我们快速开发高性能.高扩展性的网络通信应用,Mina 提供了事件驱动.异步(Mina 的异步IO 默认使用的是JAVANIO 作为底层支持)操作的编程模型. 2.ApacheMina框架使用 Mina的执行流程: > IoService:这个接口在一个线程上负责套接字的建立,拥有自己的Selector,监听是否有连接被建立. > IoProcessor:这个接口在另一个线程上

spark 启动job的流程分析

从WordCount开始分析 编写一个例子程序 编写一个从HDFS中读取并计算wordcount的例子程序: packageorg.apache.spark.examples importorg.apache.spark.SparkContext importorg.apache.spark.SparkContext._ objectWordCount{ defmain(args : Array[String]) { valsc = newSparkContext(args(0),"wordco

Apache MINA框架整合到Spring框架中

毕业设计用到了Apache公司的MINA框架作为服务端与安卓客户端的通信框架. 问题:服务端分为两个部分,一个是基于javaEE平台的后台管理系统,另一个是基于MINA框架的服务,整个项目中需求是当tomcat服务器启动的时候,将MINA服务也一起启动起来,相当于服务端程序运行起来后,开启两个服务. 分析:服务端的后台管理系统是采用Spring+Hibernate框架整合搭建的,而当tomcat服务器启动后,会加载spring的配置文件,而spring配置文件中可以自定义监听器,将启动MINA服