(一)Mina源代码解析之总体架构
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源代码解析之总体架构的更多相关文章
- NIO框架之MINA源代码解析(二):mina核心引擎
NIO框架之MINA源代码解析(一):背景 MINA的底层还是利用了jdk提供了nio功能,mina仅仅是对nio进行封装.包含MINA用的线程池都是jdk直接提供的. MINA的server端主要有 ...
- NIO框架之MINA源代码解析(一):背景
"你们的agent占了好多系统的port.把我们的非常多业务系统都给整死了,给我们造成了非常大的损失.要求你们的相关领导下周过来道歉" -- 来自我们的一个客户. ...
- HDFS原理解析(总体架构,读写操作流程)
前言 HDFS 是一个能够面向大规模数据使用的,可进行扩展的文件存储与传递系统.是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和 存储空间.让实际上是通过网络来访问文件 ...
- 一.jQuery源码解析之总体架构
(function (window, undefined) { //构建jQuery对象 var document = window.document, navigator = window.navi ...
- HDFS之四:HDFS原理解析(总体架构,读写操作流程)
前言 HDFS 是一个能够面向大规模数据使用的,可进行扩展的文件存储与传递系统.是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和 存储空间.让实际上是通过网络来访问文件 ...
- Tomcat架构解析(一)-----Tomcat总体架构
Tomcat是非常常用的应用服务器,了解Tomcat的总体架构以及实现细节,对于理解整个java web也是有非常大的帮助. 一.Server 1.最简单的服务器结构 最简单的服务器结构如图所示: ...
- [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构
[源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 目录 [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 0x00 摘要 ...
- [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构
[源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 目录 [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 0x00 摘要 0x01使用 1.1 配置 ...
- [源码解析] TensorFlow 分布式环境(1) --- 总体架构
[源码解析] TensorFlow 分布式环境(1) --- 总体架构 目录 [源码解析] TensorFlow 分布式环境(1) --- 总体架构 1. 总体架构 1.1 集群角度 1.1.1 概念 ...
随机推荐
- 2016.3 idea 注册码
idea 最新官方版本:2016.3 idea 注册码 1.下载最新idea 下载地址:https://www.jetbrains.com/idea/ 2.安装 Windows 直接下载 .exe 文 ...
- poj 3131 双向搜索+hash判重
题意: 初始状态固定(朝上的全是W,空格位置输入给出),输入初始状态的空格位置,和最终状态朝上的位置,输出要多少步才能移动到,超过30步输出-1. 简析: 每一个格子有6种状态,分别是 0WRB, 1 ...
- OOW 2015 MYSQL
https://events.rainfocus.com/oow15/catalog/oracle.jsp?search.event=openworldEvent&search.mysql=d ...
- 【spring data jpa】jpa中criteria拼接in查询
示例代码: public static Specification<GoodsType> where(final GoodsType goodsType){ return new Spec ...
- 如何将Emmet(ZenCoding)安装到到Dreamweaver8?
用过其他版本的Dreamweaver,还是习惯了Dreamweaver8,占用少,插件也容易安装,下面讲的是ZenCoding插件的安装方法,当然现在这个已经叫Emmet了. 安装方法: a.下载dw ...
- Android开发之MdiaPlayer详解
Android开发之MdiaPlayer详解 MediaPlayer类可用于控制音频/视频文件或流的播放,我曾在<Android开发之基于Service的音乐播放器>一文中介绍过它的使用. ...
- Redis主从集群以及Sentinel的配置
安装完redis后,修改几个redis从节点的配置文件redis.conf,主要是加入主节点位置 slaveof 另外需要修改的地方包括,这样允许其他的从节点连入 bind 0.0.0.0 prote ...
- 突破技术管理,IT人中年危机变契机
突破技术管理,IT人中年危机变契机 中生代技术 Yesterday 作为一个老技术人,今天不聊技术,就聊点技术人员职业发展的事情:对技术管理岗位的认知,比如技术总监. 先贴一张技术人员职业发展路线图, ...
- iOS:提示框(警告框)控件UIActionSheet的详解
提示框(警告框)控件2:UIActionSheet 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.它与导航栏类似,它继承自UIView. 风格类型: ...
- 使用ssh向sqlserver2005数据库中保存image类型的二进制图片
1.首先设计数据库表,其中photo.photo2字段均为image类型的. 2.建立实体bean对象,设置两个字段为byte[]如:private byte[] photo; private byt ...