Apache MINA

2 篇文章 0 订阅
1 篇文章 0 订阅

是什么?

一个网络通信应用框架,基于TCP/IP、UDP/IP协议栈的通信框架。

做啥用?

快速开发高性能、高扩展性的网络通信应用。

啥优势?

Mina 提供了事件驱动、异步(底层JAVA NIO、上层异步)

基于 Apache MINA 的网络应用有三个层次,分别是 IoServiceIoProcessor、IoFilter、IoHandlerIoSession

IoService

      I/O 服务用来执行实际的 I/O 操作。MINA 已经提供了一系列支持不同协议的 I/O 服务,如 TCP/IPUDP/IP、串口和虚拟机内部的管道等。开发人员也可以实现自己的 I/O 服务。IOService的意义在于隐藏底层IO的细节,对上提供统一的基于事件的异步IO接口。

      数据到达 -> 调用底层IO接口读取 ->  封装成IoBuffer  ->  以事件的形式通知上层代码(NIO转异步IO)

IoProcessor:

      负责检查是否有数据在通道上读写,IoProcessor 负责调用注册在IoService 上的过滤器,并在过滤器链之后调用IoHandler。

IoFilter:

      定义一组拦截器,包括日志输出、黑名单过滤、数据的编码(write 方向)与解码(read 方向)等功能(尤其是数据的encode 与decode)

IoHandler:

      接口负责编写业务逻辑,也就是接收、发送数据的地方。用来执行具体的业务逻辑。

IoSession:

      对底层连接的封装,一个IoSession对应于一个底层的IO连接。通过IoSession,可以获取当前连接相关的上下文信息,以及向远程peer发送数据。异步的过程

 

服务端流程:

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 通道。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值