mina框架

一、为什么使用mina框架

因为mina框架依赖于java NIO库 ,而NIO框架是非阻塞式通信。传统io通信是阻塞式通信,以流为单位处理数据,实现高并发服务器的编程方式就是对每一个客户开启一个线程,有很大的弊端。nio框架是以块为单位处理数据。这是由于的nio框架结构决定的,NIO框架有3个组成部分:selector(选择式)、channel/(通道)和Buffer缓存区组成。Selector 类是 Channel 的多路复用器,Selector 类将传入的请求多路分用并将它们分派到各自的请求Channel 处理程序。Channel将传入的数据写入缓存区Buffer,或者将数据从缓存区Buffer中读取等操作。

二、MINA框架介绍

1、组件管理

Mina的底层依赖的主要是Java NIO库,上层提供的是基于事件的异步接口
(1)IoService(最底层[起点])
作用:隐藏底层IO的细节,对上提供统一的基于事件的异步IO接口
IOSocketAcceptor和IOSocketChannel,分别对应TCP协议下的服务端和客户端的IOService,low-level IO经过IOService层后变成IO Event
(2)IoProcessor
作用:负责检查是否有数据在通道上读写
IoProcessor 负责调用注册在IoService 上的过滤器,并在过滤器链之后调用IoHandler
(3)IoFilter(拦截器[关键])
作用:日志输出、黑名单过滤、数据的编码(write 方向)与解码(read 方向)等功能
(4)IoHandler(业务逻辑处理[终点])
作用:接收、发送数据
每个IoService都需要指定一个IoHandler
(5)IoSession
作用:是对底层连接(服务器与客户端的特定连接,该连接由服务器地址、端口以及客户端地址、端口来决定)的封装

2、服务端流程

(1)、通过SocketAcceptor 同客户端建立连接;
(2)、连接建立之后 I/O的读写交给了I/O Processor线程,I/O Processor是多线程的;
(3)、通过I/O Processor 读取的数据经过IoFilterChain里所有配置的IoFilter,IoFilter进行消息的过滤,格式的转换,在这个层面可以制定一些自定义的协议;
(4)、最后IoFilter将数据交给 Handler  进行业务处理,完成了整个读取的过程;
写入过程也是类似,只是刚好倒过来,通过IoSession.write 写出数据,然后Handler进行写入的业务处理,处理完成后交给IoFilterChain,进行消息过滤和协议的转换,最后通过 I/O Processor 将数据写出到 socket 通道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值