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

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

Mina的内部结构例如以下:

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

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

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

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

server结构:

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

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

Client结构

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

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

转载于:https://www.cnblogs.com/claireyuancy/p/7275635.html

(一)Mina源代码解析之总体架构相关推荐

  1. Tomcat源码解析系列二:Tomcat总体架构

    Tomcat即是一个HTTP服务器,也是一个servlet容器,主要目的就是包装servlet,并对请求响应相应的servlet,纯servlet的web应用似乎很好理解Tomcat是如何装载serv ...

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

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

  3. 深入解析Windows操作系统之总体架构

    (一)需求和设计目标 Windows NT设计小组在项目开始之初选择了下面的设计目标: (1)扩展性:编写的系统代码必须能够随着市场需求的变化而自如增长和改变. (2)可移植性:系统必须能运行在多种硬 ...

  4. OVS的作用OVS 总体架构、源码结构及数据流程全面解析

    为什么要有OVS 1)方便网络管理与监控.OVS 的引入,可以方便管理员对整套云环境中的网络状态和数据流量进行监控,比如可以分析网络中流淌的数据包是来自哪个 VM.哪个 OS 及哪个用户,这些都可以借 ...

  5. Dubbo的总体架构

    Dubbo的总体架构,如图所示: Dubbo框架设计一共划分了10个层,最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层.图中左边淡蓝背景的为服务消费方使 ...

  6. 中小型研发团队架构实践:电商如何做企业总体架构?

    http://www.infoq.com/cn/articles/architecture-practice-09-enterprise-architecture?utm_source=infoq&a ...

  7. Web Magic 总体架构

    1.2 总体架构 WebMagic的结构分为Downloader.PageProcessor.Scheduler.Pipeline四大组件,并由Spider将它们彼此组织起来.这四大组件对应爬虫生命周 ...

  8. 首次公开,阿里云开源PolarDB总体架构和企业级特性

    简介:在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云 PolarDB 内核技术专家北侠带来了主题为<PolarDB 总体架构设计和企业级特性>的精彩演讲. 在3月2日的 ...

  9. Tomcat源代码解析系列

    学web也有一段时间了.为了从底层了解web应用在Tomcat中的执行,决定看一下Tomcat的源代码參见<How Tomcat works>    和大牛博客.对大体架构有了一定的了解, ...

最新文章

  1. Android-Spinner的使用以及两种适配器
  2. mysql 字符串解析_MySQL 动态字符串处理详解
  3. 《王者荣耀》主策划Xavier分享腾讯游戏10年在职经历
  4. @Deprecated 注解 (@Documented 、@Retention、@Target)
  5. oracle大表复制加并行,GoldenGate复制单表开并行
  6. Python学习之==装饰器
  7. cad的lisp程序大集合_大数据成神之路-Java高级特性增强(CopyOnWriteArraySet)
  8. 安徽工程大学大学计算机基础,安徽工程大学.pdf
  9. 程序员30多岁了还单身的原因
  10. 【图像分割】基于K-means聚类算法图像分割【含Matlab源码 1476期】
  11. jenkins插件下载加速
  12. 使用Clonezilla复制硬盘
  13. unity 检测电脑摄像头_unity3d调用手机或电脑摄像头
  14. 台式计算机默认关机变注销,win10系统关机变注销的解决方案
  15. 推荐一个数据库文档生成神器
  16. 软考高项记忆小妙招-项目章程
  17. 物联网为什么需要5G?
  18. 48本实体书包邮免费送!
  19. 【Android】打包生成APK教程
  20. 计算机组成原理实验存储器部件实验,实验4存储器部件实验.doc

热门文章

  1. mex 1 hello,world
  2. 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
  3. 【matlab】访问结构体内部元素
  4. mysql 索引 二_MySQL之索引(二)
  5. 哪里购买域名_注册网站域名需要多少钱?如何注册网站域名?
  6. 卧槽!这个价值百万的Github开源项目绝对要火!涵盖OCR、目标检测,NLP,语音合成多方向...
  7. Hive已死,SparkSQL来啦~
  8. 计算机视觉专硕:OCR、实习和秋招
  9. python+flask搭建CNN在线识别手写中文网站
  10. 常见面试算法:树回归、树剪枝