首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

MINA重要架构图

2012-07-25 
MINA主要架构图What is Mina ?Mina 架构Mina 线程模型Mina 事件驱动Mina 异步Mina 过滤器 (线程池,协议编

MINA主要架构图

What is Mina ?

Mina 架构

Mina 线程模型

Mina 事件驱动

Mina 异步

Mina 过滤器 (线程池,协议编解码器)

Mina 业务处理接口

Mina 类图

?

What is Mina ?

一个网络应用框架

高性能,高伸缩性

异步的

事件驱动的API

支持TCP/IP, UDP/IP, 串口,虚拟机内部管道等协议

?

Mina 架构-应用

MINA重要架构图

从应用角度看mina架构

?

Mina基本接口

-- IoService 服务端和客户端的抽象

–IoAccepter? 相当于网络应用程序中的服务器端

–IoConnector 相当于客户端

–IoSession 当前客户端到服务器端的一个连接实例

–IoHandler 业务处理接口

–IoFilterChina 过滤器链

–IoFilter?? 过滤器用于连接通讯层接口与业务层接口

–IoProcessor I/O读写服务

?

Mina NIO Socket 线程模型

Acceptor Thread :

??? 接受客户端连接,将连接导入Processor线程, ?mina自动生成, 单线程,不可配置

Connector Thread:

??? 客户端连接线程, 将与服务器的连接导入到Processor, mina自动生成, 单线程,不可配置

Processor Thread:

??? 接受,发送数据, ?默认为CPU个数加一, 可配置 new NioSocketAcceptor(processorNum);

?

服务端处理过程

NioSocketAcceptor acceptor = new NioSocketAcceptor();

acceptor.bind(new InetSocketAddress(8888));

MINA重要架构图

?

Mina 事件封装

Apache MINA 提供事件驱动的 API

将网络有关的各种活动抽象成事件

会话创建,打开,关闭,消息接收,发送等

?

事件专递过程

MINA重要架构图

?

?

事件传递基础-职责链模式

IoFilterChain filterChain = session.getFilterChain();

filterChain.fireMessageReceived(buf);

?

MINA重要架构图

?

Mina 异步

Mina中很多操作都是异步的,它只管投递异步操作,不会阻塞业务流程

WriteFuture future = session.write(Object)

writeRequestQueue? 写请求队列

ConnectFuture future = connector.connect(new InetSocketAddress(?"127.0.0.1", 8888));

future.addListener(IoFutureListener) // 设置监听器

connectQueue 链接请求队列

ReadFuture r = session.read();

readyReadFutures 读队列

CloseFuture c = session.close(true)

removingSessions 关闭队列MINA重要架构图

?

?

Mina 过滤器

ProtocolCodecFilter?? 协议编解码器

acceptor.getFilterChain().addLast(“last",new ProtocolCodecFilter(new ObjectEncoder(),new ObjectDecoder()));

?

ExecutorFilter?? 线程化

???? acceptor.getFilterChain().addLast(“last",new

ExecutorFilter(Executors.newCachedThreadPool()));

?

协议编解码器

MINA重要架构图

CumulativeProtocolDecoder

数据流累积解码器

反序列化时需要知道接受的流是否等于发送的对象的大小,否则反序列化就可能失败。

?

ExectorFilter

ExecutorFilter是一个IoFilter

用于将进入的I/O事件转到一个 java.util.concurrent.Executor实现。事件会从这个Executor转到下一个IoFilter,通常是一个线程池。可以在 IoFilterChain的任何地方增加任意数目的ExecutorFilter,实现任何类型的线程模型

?

ExectorFilter 模型

MINA重要架构图

?

Mina?业务处理接口

IoHandlerAdapter

抽象类, 默认实现IoHandler接口

acceptor.setHandler(new ServerHandler());MINA重要架构图

?

?

IoHandler 业务处理接口

void exceptionCaught(IoSession session, Throwable cause) 当接口中其他方法抛出异常未被捕获时触发此方法

void messageReceived(IoSession session, Object message)? 当接收到客户端的请求信息后触发此方法

void messageSent(IoSession session, Object message) 当信息已经传送给客户端后触发此方法

void sessionClosed(IoSession session) 当连接被关闭时触发,例如客户端程序意外退出等等

void sessionCreated(IoSession session) 当一个新客户端连接后触发此方法

void sessionIdle(IoSession session, IdleStatus status) 当连接空闲时触发此方法

void sessionOpened(IoSession session) 当连接后打开时触发此方法,一般此方法与 sessionCreated 会被同时触发

?

类图

MINA重要架构图

?

与JMX集成

Apache MINA 可以集成 JMX 来对网络应用进行管理和监测

MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();

IoAcceptor acceptor = new NioSocketAcceptor(); // 服务端

IoServiceMBean acceptorMBean = new IoServiceMBean(acceptor);

ObjectName acceptorName = new ObjectName(“”);

mBeanServer.registerMBean(acceptorMBean, acceptorName); // 注册

热点排行