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---系统学习的更多相关文章

  1. Dubbo -- 系统学习 笔记 -- 配置参考手册

    Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...

  2. Dubbo -- 系统学习 笔记 -- 依赖

    Dubbo -- 系统学习 笔记 -- 目录 依赖 必需依赖 缺省依赖 可选依赖 依赖 必需依赖 JDK1.5+ 理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策 ...

  3. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  4. Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇

    前言 前一篇 Unity3D 装备系统学习Inventory Pro 2.1.2 总结 基本泛泛的对于Inventory Pro 这个插件进行了讲解,主要是想提炼下通用装备系统结构和类体系.前两天又读 ...

  5. MES系统学习

    MES系统是当今制造型企业信息化的热点,而统一建模语言UML是面向对象建模的标准语言,在软件工程发挥着重要作用.MES系统如何进行UML建模呢,今天和大家重点讨论一下MES系统的UML建模方法,请看本 ...

  6. 001 今天开始系统学习C#

    2016-01-16 之前只是大概了解过c#语言,感觉掌握不牢靠.现在开始系统学习C#.现以该博客作为学习笔记,方便后续查看.C# 目标:系统掌握c#知识 时间:30天 范围:C#基础,Winform ...

  7. Linux系统学习笔记:文件I/O

    Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...

  8. 从mina中学习超时程序编写

    从mina中学习超时程序编写 在很多情况下,程序需要使用计时器定,在指定的时间内检查连接过期.例如,要实现一个mqtt服务,为了保证QOS,在服务端发送消息后,需要等待客户端的ack,确保客户端接收到 ...

  9. Hibernate的系统 学习

    Hibernate的系统 学习 一.Hibernate的介绍 1.什么是Hibernate? 首先,hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBat ...

  10. css系统学习网站

    最近系统学习一下css样式,找到一个不错的网站.http://css.doyoe.com/

随机推荐

  1. 备份Oracle 数据库。

    #!/bin/bash# 2018-07-07 oracle database back#filename=`date +%Y%m%d`filename=`date +%Y_%m_%d_%H%M`di ...

  2. 监控服务(keepalived,httpd)

    #!/bin/bashpidof httpdif [ $? -eq 0 ];then echo "httpd is ok"else echo "httpd is not ...

  3. Mysql学习笔记(003)-案例讲解基础查询

    案例讲解基础查询 #.下面的语句是否可以执行成功 SELECT last_name, first_name, salary AS sal FROM employees; #.下面的语句是否可以执行成功 ...

  4. css3-手把手 transform 小时钟

    学习css3ing,正在学习transfomr,突发奇想用此做个小时钟,开始吧: 准备前期工作,把时钟的表盘,时分秒针,实时时间标签 的大概样子做好,效果如图: html代码如下: <div c ...

  5. loadRunner函数之web_find

    int web_find( const char *StepName, <Attributes and Specifications list>, char *searchstring, ...

  6. win7 SP1 64位 原版 百度网盘下载

    下载地址:https://pan.baidu.com/s/1bnOtKU5YH4gSr1RmZR2BkQ 提取码 :s9o7 扫码下载:

  7. MSSQLSERVER错误1

      错误信息 数据库日志记录 09/07/2017 16:10:31,登录,未知,Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数 ...

  8. LR快捷键

    record optioning:录制选项——ctrl+f7 runtime setting  : 运行时设置——F4 运行脚本——F5 参数列表:ctrl+L 注释:ctrl+shift+c 选中后 ...

  9. Python进阶:set和dict/对象引用、可变性和垃圾回收/元类编程/迭代器和生成器

    frozenset:不可变集合,无序,不重复 dict上的特性: 1. dict的key或者set的值 都必须是可以hash的(不可变对象 都是可hash的, str, fronzenset, tup ...

  10. [STemWin教程入门篇] 第一期:emWin介绍

    转自:http://bbs.armfly.com/read.php?tid=1544 SEGGER公司介绍 了解emWin之前,先了解一下SEGGER这家公司,了解生产商才能对emWin有更加全面的认 ...