Mina框架详解(定义作用及功能架构)

Mina框架详解(定义作用及功能架构)-mikechen

Mina框架定义

Mina框架是 Apache 开源的一款网络通信应用框架,是一款Java NIO通信框架。

 

Mina框架作用

Mina框架是对Java NIO包的一个封装,简化了NIO程序开发的难度,封装了很多底层的细节。

主要屏蔽了网络通信的一些细节,比如:对Socket进行封装,并且是NIO的一个实现架构,可以帮助我们快速的开发网络通信。

 

Mina框架架构

1.通讯层框架

MINA是应用程序(服务端和客户端)和网络层间(TCP UDP 内存通信)的桥梁,Mina位于用户应用程序和底层Java网络API(和in-VM通讯)之间,咱们开发基于Mina的网络应用程序,就无需关心复杂的通讯细节。

Mina框架详解(定义作用及功能架构)-mikechen

2.应用总体架构

Mina的底层依赖的主要是Java NIO库,上层提供的是基于事件的异步接口,Mina应用框架被分成了主要的3个组件部分,远程客户端通过IoService建立连接得到session,session将数据传送到IoFilterChain进行过滤,最后客户端在IoHandle中进行数据操作。IoFilter作为IoService 和IoHandler 之间的桥梁。

  • I/O Service,具体提供服务的组件。
  • I/O Filter Chain,过滤器链,负责编码处理,字节到数据结构或数据结构到字节的转换等,即非业务逻辑的操作;
  • I/O Handler,用于处理用户的业务逻辑。
Mina框架详解(定义作用及功能架构)-mikechen

Server/Client架构

服务端的作用就是开启监听端口,等待请求的到来、处理他们、以及将发送对请求的响应。同时,服务端会为每个连接创建session,在session周期内提供各种精度的服务,比如连接创建时(sessionCreated(IoSession session))、连接等待时(sessionIdle(IoSession session, IdleStatus status))、连接销毁时(sessionClosed(IoSession session))等。mina的api为TCP/UDP提供的一致性Server端操作。

  • IOAcceptor 监听来自网络的请求。
  • 当新的连接建立时,一个新的session会被创建,该session用作对同一IP/端口组合的客户端提供服务。
  • 数据包需经过一系列的过滤器,这些过滤器可用来修改数据包的内容(如转换对象、添加或修改信息等),其中将原始字节流转换成POJO对象是非常有用的。当然这需要解编码器提供支持。
  • 最后这些数据包或转化后的对象将交由IOHandler处理,我们将实现IOHandler用于处理具体的业务逻辑。

客户端执行流程,客户端通过 IoHandler 从服务器端接收所有响应请求和消息之后,通过开发者在 IoConnector 连接服务器时,遍历加入过滤链的过滤器,接着通过 IoConnector 发送数 据到服务器端。

  • 客户端首先创建一个IOConnector,并启动与Server的绑定
  • 创建Connection后,将创建一个Session,并与Connection关联
  • 应用程序/客户端写会话,导致数据被发送到服务器,在遍历过滤链
  • 从Server接收到的所有响应/消息都将遍历过滤器链并落在IOHandler上进行处理
Mina框架详解(定义作用及功能架构)-mikechen

 

 

Mina框架使用场景

服务端异步通信场景:mina是个异步通信框架,一般使用场景是服务端开发,长连接、异步通信使用;

游戏行业:如果要使用Java语言来开发游戏服务器,那么Mina框架可以作为选择;

MINA框架的应用比较广泛,应用的开源项目有Apache Directory、AsyncWeb、ApacheQpid、QuickFIX/J、Openfire、SubEthaSTMP、red5等。

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法