程序猿阵线联盟-汇总各类技术干货

P8架构师教你如何认识,Mina

2019-11-15  本文已影响0人  勤奋的码农

认识 Mina

Apache Mina Server 是一个网络通信应用框架,与 Netty 出自同一作者,Netty 借鉴了部分 Mina 的设计思路。

image

Mina 主要是对基于 TCP/IP、UDP/IP 协议栈的通信框架,Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步操作的编程模型,Mina 的异步 IO 默认使用的是 JAVA NIO(New IO)作为底层支持,基于 Channel 的双向通道。Mina 主要有1.x 和2.x 两个分支。Mina 同时提供了网络通信的 Server 端、Client 端的封装,无论是哪端,Mina 在整个网通通信结构中提供了一系列接口 API,Mina 的 API 将真正的网络通信与我们的应用程序隔离开来。Java学习圈子

image

Mina 的底层依赖的主要是 Java NIO 库,上层提供的是基于事件的异步接口。其整体的结构如下:

image

服务端流程:

写入过程也是类似,只是刚好倒过来,通过 IoSession.write 写出数据,然后 Handler 进行写入的业务处理,处理完成后交给 IoFilterChain,进行消息过滤和协议的转换,最后通过 I/O Processor 将数据写出到 socket 通道。Java学习圈子

简单的 TCPServer

第一步:编写 IoService

image

第二步:编写过滤器

image

第三步:编写 IoHandler

image

把这个 IoHandler 注册到 IoService:

image

当然这段代码也要在 acceptor.bind() 方法之前执行。完成的代码:

image

简单的 TCPClient

第一步:编写 IoService 并注册过滤器

image

第三步:编写 IoHandler

image

注册 IoHandler:

<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">

connector.setHandler(new ClientHandler("你好!\r\n 大家好!")); 

</pre>

粉丝福利

Java架构进阶资源

image

分析源码

image

分布式架构

image

性能优化

image

Java面试避坑指南

image

Java面试题集锦

image
上图中的资料都是我精心录制视频,感兴趣的可以到我的Java学习圈子:免费获取。希望能够在你接下来即

将应对的的面试过程中能够尽到一份绵薄之力。

上一篇下一篇

猜你喜欢

热点阅读