Apache Mina Server 是一个网络通信应用框架。也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也能够提供JAVA 对象的序列化服务、虚拟机管道通信服务等)。Mina 能够帮助我们高速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型。

Mina 同一时候提供了网络通信的Server 端、Client 端的封装。不管是哪端,Mina 在整个网通通信结构中都处于例如以下的位置:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Mina的内部结构例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

上图中,我们能够非常明显的看出,基于mina的应用被分成3层

第一层I/O Service:处理真实的I/O

第二层I/O FilterChain:过滤盒传输字节流成指定的数据结构

第三层I/O Handler:处理真实的业务逻辑

server结构:

server在我们指定的port监听请求。处理请求发送应答信息,当我们使用TCP和UDP传输协议时它还会为每一个client创建和处理session

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

IoAcceptor监听是否有连接或数据包的到来。对于一个新的连接。一个新的session会被创建随后全部的从这个IPport的请求会被在这个session中处理,从session中接收的全部数据包会横穿FilterChain 。Filter能够用来改动数据包的内容,比如将字节流转化成Object,我们还能够通过自己定义的编解码器将字节流转化成我们指定的不论什么类型,终于数据包或Object会到达IoHandler,IoHandler用来处理我们的业务逻辑

Client结构

client须要连接server,发送消息处理应答

client第一次创建IoConnector,初始化和server的连接。一个session会被创建然后和这个连接绑定,client向这个session中写入数据,穿过过滤器链然后发送给server。全部从这个server接收的应答穿过过滤器链来到IoHandler,进行业务逻辑处理

(一)Mina源代码解析之总体架构的更多相关文章

  1. NIO框架之MINA源代码解析(二):mina核心引擎

    NIO框架之MINA源代码解析(一):背景 MINA的底层还是利用了jdk提供了nio功能,mina仅仅是对nio进行封装.包含MINA用的线程池都是jdk直接提供的. MINA的server端主要有 ...

  2. NIO框架之MINA源代码解析(一):背景

     "你们的agent占了好多系统的port.把我们的非常多业务系统都给整死了,给我们造成了非常大的损失.要求你们的相关领导下周过来道歉"   --   来自我们的一个客户.   ...

  3. HDFS原理解析(总体架构,读写操作流程)

    前言 HDFS 是一个能够面向大规模数据使用的,可进行扩展的文件存储与传递系统.是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和 存储空间.让实际上是通过网络来访问文件 ...

  4. 一.jQuery源码解析之总体架构

    (function (window, undefined) { //构建jQuery对象 var document = window.document, navigator = window.navi ...

  5. HDFS之四:HDFS原理解析(总体架构,读写操作流程)

    前言 HDFS 是一个能够面向大规模数据使用的,可进行扩展的文件存储与传递系统.是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和 存储空间.让实际上是通过网络来访问文件 ...

  6. Tomcat架构解析(一)-----Tomcat总体架构

    Tomcat是非常常用的应用服务器,了解Tomcat的总体架构以及实现细节,对于理解整个java web也是有非常大的帮助. 一.Server   1.最简单的服务器结构 最简单的服务器结构如图所示: ...

  7. [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构

    [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 目录 [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 0x00 摘要 ...

  8. [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构

    [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 目录 [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 0x00 摘要 0x01使用 1.1 配置 ...

  9. [源码解析] TensorFlow 分布式环境(1) --- 总体架构

    [源码解析] TensorFlow 分布式环境(1) --- 总体架构 目录 [源码解析] TensorFlow 分布式环境(1) --- 总体架构 1. 总体架构 1.1 集群角度 1.1.1 概念 ...

随机推荐

  1. Mastering stack and heap for system reliability

    http://www.iar.com/Global/Resources/Developers_Toolbox/Building_and_debugging/Mastering_stack_and_he ...

  2. kernel-release为 2.6.35-32-generic 详解

    linux distribution通常会在这三个版本号后加入后缀,用以描述其他信息,以我的Unbuntu 10.10为例: kernel-release为 2.6.35-32-generic(有的为 ...

  3. sqlserver获取指定数据库的描述

    SELECT 字段名= convert(varchar(100), a.name), 表名= convert(varchar(50), d.name ), 类型= CONVERT(varchar(50 ...

  4. jacob使用入门及问题解析

    转自:http://blog.csdn.net/hemingwang0902/article/details/4377994 本博客 jacob 列文章导读Java操作Microsoft Word之j ...

  5. 类似于GROUP BY SUM() 用于字符串连接的语句

    CREATE TABLE T ( [f1] VarCHAR(100), [f2] VarCHAR(100))goINSERT INTO T   VALUES ('a','abc')INSERT INT ...

  6. Out of memory: Kill process 内存不足

    服务直接被 killed,感觉特别奇怪.代码肯定是没有问题的,但为什么放到服务器上就出错了呢. 部署时报错如下: Failed to add the deployment content to the ...

  7. [Todo] Java及C++ Exception整理

    今天接触到一些Java Exception方面的内容,整理如下: http://developer.51cto.com/art/201111/304649.htm C++中Exception等的整理

  8. vue-router路由元信息详解

    一.官方文档 路由元信息:定义路由的时候可以配置 meta 字段 const router = new VueRouter({ routes: [ { path: '/foo', component: ...

  9. 用php当作cat使用

    今天,本来是想敲 node test.js 执行一下,test.js文件,结果 惯性的敲成了 php  test.js, 原文输出了 test.js的内容. 突然觉得,这东西 感觉好像是 cat  命 ...

  10. 使用BeyondCompare比较文件夹下的文件时,相同的文件内容,但显示为不相同

    主要原因是: 两个文件行尾标题不一致而导致的,一个是PC,一个是Unix 解决办法: 随便比较文件夹中的两个文件,点击规则,去掉比较行尾(pc/mac/unix)选项,点击确认,回到文件夹比较界面,刷 ...