Mina框架定义
Mina框架是 Apache 开源的一款网络通信应用框架,是一款Java NIO通信框架。
Mina框架作用
Mina框架是对Java NIO包的一个封装,简化了NIO程序开发的难度,封装了很多底层的细节。
主要屏蔽了网络通信的一些细节,比如:对Socket进行封装,并且是NIO的一个实现架构,可以帮助我们快速的开发网络通信。
Mina框架架构
1.通讯层框架
MINA是应用程序(服务端和客户端)和网络层间(TCP UDP 内存通信)的桥梁,Mina位于用户应用程序和底层Java网络API(和in-VM通讯)之间,咱们开发基于Mina的网络应用程序,就无需关心复杂的通讯细节。
2.应用总体架构
Mina的底层依赖的主要是Java NIO库,上层提供的是基于事件的异步接口,Mina应用框架被分成了主要的3个组件部分,远程客户端通过IoService建立连接得到session,session将数据传送到IoFilterChain进行过滤,最后客户端在IoHandle中进行数据操作。IoFilter作为IoService 和IoHandler 之间的桥梁。
- I/O Service,具体提供服务的组件。
- I/O Filter Chain,过滤器链,负责编码处理,字节到数据结构或数据结构到字节的转换等,即非业务逻辑的操作;
- I/O Handler,用于处理用户的业务逻辑。
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框架使用场景
服务端异步通信场景:mina是个异步通信框架,一般使用场景是服务端开发,长连接、异步通信使用;
游戏行业:如果要使用Java语言来开发游戏服务器,那么Mina框架可以作为选择;
MINA框架的应用比较广泛,应用的开源项目有Apache Directory、AsyncWeb、ApacheQpid、QuickFIX/J、Openfire、SubEthaSTMP、red5等。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》