MINA简单的介绍

本篇对MINA进行介绍:

上图说明的是MINA在我们的项目中所处的层次。相当于对底层的通信系统做了一个封装。由于MINA暴露给用户的接口足够友好,所以MINA使用起来相当方便!
 
MINA架构图:
 
一个框架最重要的应该是它的数据流动和线程结构,数据流动能够很好的帮助理解框架,线程结构是理解工作方式的必要前提!
 
1.   MINA数据流
在MINA连接程序中,每个用户在连接的时候会建立一个TCP连接, 也就是建立了一条通信管道,客户端(remote peer)在给服务器发送消息的时候所经历的流程如上所示:
在服务端会经过一个IoFilterChain, 也就是java中的责任链模式, 也就是数据包会经过链路上的每个filter进行处理, 比如(编码,解码,打印数据包内容)。你可以自定义
各种需要的filter。
 
MINA暴露给用户的接口是IoHandler, 在IoHandler中MINA为我们提供了几个常用的事件接口, 比如连接建立, 收到消息, 捕获到异常等等, 这些就是我们可以插入代码
到MINA框架的地方, 数据包在MINA在框架中经过各种filter后到了我们自定义的IoHandler中,控制权就转移到了我们的手中!
 
一般MINA框架给我们提供插入点就是在filter链上插入filter和在IoHandler实现各种事件接口。
 
2.   MINA线程结构
MINA采用的javaNIO程序, 作为一个服务器框架, 那么MINA必须有一个监听的线程,监听的线程负责响应客户端的各种连接事件。
在接收到各种连接事件后,MINA会分派一个processer线程来处理这个客户端连接上的各种读写事件,这里MINA会启动和CPU核数相关数量的线程,而且一个processer线程
会处理多个客户端连接读写事件。processer线程在处理读写事件的时候就是按照上面的数据流来进行处理的、于是整个结构就清晰了。
 
 
上面说明了Mina的使用方式,省去了JAVA NIO细节, 因为要使用的话基本就只需要做到这个地步就可以了。 如何感兴趣可以去阅读MINA的源码!
如果只需要使用MINA的话,那么上面的数据流细节和线程细节已经能很好的阐释MINA框架了。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/hpf311/p/5192007.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MINA(Apache MINA,全称Apache Multipurpose Internet Networking Architecture)是一个基于Java NIO(Non-blocking I/O)的网络应用框架,它提供了一组高效、可靠的网络通信及应用程序开发工具,使得开发高性能、可伸缩、可重用和易于维护的网络应用程序变得更加简单和容易。 MINA框架的功能层主要包括以下几个部分: 1. I/O Service层:提供了一组高效、可靠的网络通信服务,包括TCP、UDP、SSL等多种协议支持,并且支持异步非阻塞I/O模型,可以处理大量的并发连接请求。 2. Filter层:提供了一组可插拔的过滤器,用于在I/O Service层和应用层之间进行数据的拦截、处理和转换,可以实现诸如协议解析、消息编解码、数据加解密、压缩解压等功能。 3. Codec层:提供了一组通用的编解码器(Codec),用于将复杂的数据结构转换为字节流,或将字节流转换为具体的数据结构,可以大大简化数据传输和处理的复杂度。 4. Session层:提供了一组Session管理机制,用于管理客户端与服务器之间的连接会话,可以方便地实现会话的创建、销毁、状态维护等操作。 5. Handler层:提供了一组可扩展的事件处理器(handler),用于处理各种事件,包括连接事件、读写事件、异常事件等,并且支持事件的链式调用,可以实现复杂的业务处理逻辑。 通过这些功能层的组合使用,MINA框架可以轻松地实现各种网络应用程序的开发和扩展,包括聊天室、实时游戏、即时通讯、RPC远程调用等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值