Mina---系统学习
1、为何使用Mina?
java提供的BIO、NIO使用的复杂性等原因,导致Mina框架的诞生;
2、什么时候使用Mina?
易于使用
高并发的用户量
被证明的系统:
Mina已被全球数以万计的应用使用;
现有协议的支持:
HTTP、TCP、UDP。。。
3、Mina的特性

4、Mina应用架构

5、Mina架构实现细节

基于Mina的应用分为3个层次:
1.1 I/O Service(I/O服务) ----具体的I/O操作
1.2 I/O Filter Chain(I/O 过滤器链) -----将字节过滤/转换为想要的数据结构,反之亦然
1.3 I/O Handler(I/O 处理器) -----实现实际的业务逻辑
6、创建基于Mina的应用的步骤
1.1 创建一个I/O Service ---从已存在的service中挑选一个或创建自己的
1.2 创建一个Filter Chain ---从现有Filter中挑选或创建一个自定义Filter
1.3 创建一个I/O Handler ---处理不同消息时编写具体业务逻辑
7、Mina---服务端架构
1.1 服务器端监听一个端口以获得连入请求,将其进行处理后然后发送回复;
服务器端还会为每个客户端创建并维护一个Session;

I/O Acceptor :监听网络以获取连入的连接或包
对于每一个新的连接,一个新的session会被创建,之后所有来自该IP地址/端口组合的请求会在同一个session中处理
在一个session中接收到的所有包,将穿越上图中所示的Filter Chain;
只要一个客户端连接到了Mina服务器端,需要创建一个新的session存放持久化数据;
Filter Chain用于修正包的内容(转化为对象、添加、删除信息等);
对于从原始字节到高层对象的相互转换,PacketEncoder/Decoder相当有用;
包或转化后的对象最终交由IOHandler;
IOHandler用于实现具体业务需求;
8、Mina---客户端架构
1.1 客户端需要连接一个服务器端,发送消息并处理响应;

客户端首先创建一个IOConnector,开启一个服务器的绑定;
在连接创建时,一个Session会被创建并关联到该连接;
应用或客户端写入Session,导致数据在穿越Filter Chain后被发送到服务器端;
所有接收自服务器端的响应穿越Filter Chain后由IOHandler接收并处理;
Mina---系统学习的更多相关文章
- Dubbo -- 系统学习 笔记 -- 配置参考手册
Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...
- Dubbo -- 系统学习 笔记 -- 依赖
Dubbo -- 系统学习 笔记 -- 目录 依赖 必需依赖 缺省依赖 可选依赖 依赖 必需依赖 JDK1.5+ 理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策 ...
- 零基础如何系统学习Java Web
零基础如何系统学习Java Web? 我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...
- Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇
前言 前一篇 Unity3D 装备系统学习Inventory Pro 2.1.2 总结 基本泛泛的对于Inventory Pro 这个插件进行了讲解,主要是想提炼下通用装备系统结构和类体系.前两天又读 ...
- MES系统学习
MES系统是当今制造型企业信息化的热点,而统一建模语言UML是面向对象建模的标准语言,在软件工程发挥着重要作用.MES系统如何进行UML建模呢,今天和大家重点讨论一下MES系统的UML建模方法,请看本 ...
- 001 今天开始系统学习C#
2016-01-16 之前只是大概了解过c#语言,感觉掌握不牢靠.现在开始系统学习C#.现以该博客作为学习笔记,方便后续查看.C# 目标:系统掌握c#知识 时间:30天 范围:C#基础,Winform ...
- Linux系统学习笔记:文件I/O
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...
- 从mina中学习超时程序编写
从mina中学习超时程序编写 在很多情况下,程序需要使用计时器定,在指定的时间内检查连接过期.例如,要实现一个mqtt服务,为了保证QOS,在服务端发送消息后,需要等待客户端的ack,确保客户端接收到 ...
- Hibernate的系统 学习
Hibernate的系统 学习 一.Hibernate的介绍 1.什么是Hibernate? 首先,hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBat ...
- css系统学习网站
最近系统学习一下css样式,找到一个不错的网站.http://css.doyoe.com/
随机推荐
- 备份Oracle 数据库。
#!/bin/bash# 2018-07-07 oracle database back#filename=`date +%Y%m%d`filename=`date +%Y_%m_%d_%H%M`di ...
- 监控服务(keepalived,httpd)
#!/bin/bashpidof httpdif [ $? -eq 0 ];then echo "httpd is ok"else echo "httpd is not ...
- Mysql学习笔记(003)-案例讲解基础查询
案例讲解基础查询 #.下面的语句是否可以执行成功 SELECT last_name, first_name, salary AS sal FROM employees; #.下面的语句是否可以执行成功 ...
- css3-手把手 transform 小时钟
学习css3ing,正在学习transfomr,突发奇想用此做个小时钟,开始吧: 准备前期工作,把时钟的表盘,时分秒针,实时时间标签 的大概样子做好,效果如图: html代码如下: <div c ...
- loadRunner函数之web_find
int web_find( const char *StepName, <Attributes and Specifications list>, char *searchstring, ...
- win7 SP1 64位 原版 百度网盘下载
下载地址:https://pan.baidu.com/s/1bnOtKU5YH4gSr1RmZR2BkQ 提取码 :s9o7 扫码下载:
- MSSQLSERVER错误1
错误信息 数据库日志记录 09/07/2017 16:10:31,登录,未知,Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数 ...
- LR快捷键
record optioning:录制选项——ctrl+f7 runtime setting : 运行时设置——F4 运行脚本——F5 参数列表:ctrl+L 注释:ctrl+shift+c 选中后 ...
- Python进阶:set和dict/对象引用、可变性和垃圾回收/元类编程/迭代器和生成器
frozenset:不可变集合,无序,不重复 dict上的特性: 1. dict的key或者set的值 都必须是可以hash的(不可变对象 都是可hash的, str, fronzenset, tup ...
- [STemWin教程入门篇] 第一期:emWin介绍
转自:http://bbs.armfly.com/read.php?tid=1544 SEGGER公司介绍 了解emWin之前,先了解一下SEGGER这家公司,了解生产商才能对emWin有更加全面的认 ...