`
zhaohaolin
  • 浏览: 1016147 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于MINA构建简单高性能的NIO应用-前言<转>

    博客分类:
  • Mina
 
阅读更多
19 February 2010

本文为Sparkle发于《程序员》2008年2月刊的文章,与《程序员》的协议,可以在个人博客中发布,转载请保留出处。

前言

MINA是Trustin Lee最新制作的Java通讯框架。通讯框架的主要作用是封装底层IO操作,提供高级的操作API。比较出名的通讯框架有C++的ACE、Python的Twisted,而Java的通讯框架还有QuickServer、Netty2、Cindy、Grizzly等。

2004年6月,Trustin Lee发布了一个通讯框架Netty2,是Java界第一个事件模型架构的通讯框架,Cindy也从中借鉴了不少思想。由于Netty2的架构不是很好,Trustin Lee在2004年底加入Apache Directory组之后,重写了整个框架,取名为MINA。MINA是一个基于Java NIO的通讯框架,Java从1.4开始引入NIO,提供了一个非阻塞、高性能的IO底层。

目前使用MINA的产品并不是很多,比较出名的就有Apache Directory(作者就在为这个项目效力)、Openfire(Jive出品的一个XMPP产品)、red5(研究flash流媒体flv技术的朋友应该很清楚这个东西,adobe fms的竞争者,国内也有视频网站在使用)等等。 (Article by Sparkle)

笔者在07年初的时候,公司新项目需要用Java实现一个Socket Server,对比了Netty2、Cindy、QuickServer和MINA。当时Netty2已经停止开发,也找不到官方网站和代码,比较了另外三个框架之后,毅然选择了当时文档比较缺乏和使用群较少的MINA,一年以来的使用经验来看,感觉还是很不错的,MINA有着清晰的架构,很方便做自定义的扩充。在1.0发布之后,官方网站充实了很多,增加了不少文档,也听到越来越多的朋友开始使用MINA。后来专门针对JDK 1.5发布了1.1的版本,使用JDK内置的concurrent代替backport-util-concurrent。目前1.0和1.1同时存在,但已经不再增加新功能,仅仅发布bug fix的版本,新功能都在2.0中实现,2.0调整了架构,性能有更大的提升,目前还在开发中。

基本特性

  • 通过Java NIO支持TCP和UDP协议,另外还支持RS232和VM内通讯。由于MINA有清晰的架构,你也能很简单地实现一个底层网络协议。目前不支持阻塞IO,似乎还没有计划支持,当然你可以在其之上实现一个阻塞的模型,不过按照笔者的经验来说,非阻塞IO更适合Server端编程。
  • 一个类似ServletFilter的过滤器模型。这是笔者认为MINA的精髓所在,通过引入过滤器模型,可以将一些非业务的功能独立开来,层次更清晰,很有AOP的思想,可以很方便地进行日志、协议转换、压缩等等功能,还能在运行中动态增加或去掉功能。(Article by Sparkle)
  • 可以直接使用底层的ByteBuffer,也可以使用用户定义的消息Object和编码方式。
  • 高度可定制的线程模型,单线程、一个线程池,或者类似SEDA的多个线程池。
  • SSL支持,攻击防御和流量控制,mock测试友好,JMX支持,Spring集成,你还需要更多吗。

文章快速索引

  1. 前言
  2. 一个简单的例子
  3. MINA架构
  4. 优化指南
分享到:
评论

相关推荐

    基于MINA构建高性能的NIO应用

    ### 基于MINA构建高性能的NIO应用 #### 概述 MINA作为一款优秀的客户端/服务器架构下的Java服务器框架,凭借其强大的功能和灵活性,在开发高性能网络应用程序方面表现突出。本文将深入探讨MINA的核心概念、优势...

    基于MINA构建简单高性能的NIO应用.pdf

    "基于MINA构建简单高性能的NIO应用.pdf" 这个标题指出,文档主要讨论如何使用MINA框架来构建一个基于非阻塞I/O (Non-blocking I/O, NIO) 的应用程序。MINA是一个开源的Java框架,专为网络通信设计,特别是高性能、高...

    基于MINA构建简单高性能的NIO应用

    综上所述,通过MINA框架,可以有效地构建出简单、高性能的NIO应用。MINA作为一套成熟的网络应用框架,其提供的丰富接口与组件大大简化了网络编程的复杂度,提高了开发效率。通过示例中的时间服务器程序,我们可以...

    MINA NIO 高性能异步并发网络通讯框架

    利用 Mina 可以高效地完成以下任务:&lt;br&gt;&lt;br&gt;TCP/IP 和 UDP/IP 通讯 &lt;br&gt;串口通讯 &lt;br&gt;VM 间的管道通讯 &lt;br&gt;SSL/TLS &lt;br&gt;JXM 集成 &lt;br&gt;IoC 容器集成( Spring 、 Pico 等) &lt;br&gt;状态机&lt;br&gt;&lt;br&gt;据官方评测, APR 的...

    springboot 整合mina 源码,nio通讯基础教程,mina框架基础教程.rar

    Spring Boot以其简洁、快速的起步方式深受开发者喜爱,而Mina则是一个强大的网络通信框架,常用于构建高性能、高并发的网络应用。结合NIO,我们可以创建出更加高效的数据传输服务。 首先,我们要理解Spring Boot的...

    mina socket客户度工程相关类

    1.mina socket客户度工程相关类,添加mina jar包后可独立运行。 2.mina若有空闲连接则使用已有... &lt;groupId&gt;org.apache.mina&lt;/groupId&gt; &lt;artifactId&gt;mina-core&lt;/artifactId&gt; &lt;version&gt;2.0.9&lt;/version&gt; &lt;/dependency&gt;

    基于 MINA 的 TLS/SSL NIO Socket 实现(二)

    MINA是一个高度可扩展的网络应用框架,广泛用于构建高性能、高并发的网络应用程序,如服务器端的TCP和UDP服务。本文将主要关注在Java中使用MINA来实现安全套接层(SSL)和传输层安全(TLS)协议,这两个协议是网络...

    基于高性能NIO的MINA框架的应用

    本文介绍了一种基于高性能Java NIO的MINA框架,用以构建高性能的即时通讯系统服务器。MINA框架(Multipurpose Infrastructure for Network Applications)是基于Java NIO设计的网络应用程序框架,其特点是采用松耦合...

    Mina例子包含与spring整合

    1. **Apache MINA**:MINA是基于Java NIO(非阻塞I/O)的网络应用框架,用于构建高性能、跨平台的服务器端和客户端网络应用程序。它提供了一个事件驱动的模型,允许在高并发场景下处理大量连接,同时保持低内存开销...

    spring boot 整合mina 串口

    Spring Boot作为一款轻量级的框架,使得快速构建应用变得简单。而Mina则是一款强大的网络通信库,它提供了对TCP/IP和UDP协议的支持,同时也支持串口通信。本文将详细介绍如何在Spring Boot项目中整合Mina来实现串口...

    mina2.0 含11个jar包

    mina-core-2.0.0-M6.jar mina-example-2.0.0-M6.jar mina-filter-codec-netty-2.0.0-M6.jar mina-filter-compression-2.0.0-M6.jar mina-integration-beans-2.0.0-M6.jar mina-integration-jmx-2.0.0-M6.jar mina-...

    深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别

    Apache Mina是一个高性能的网络应用框架,主要用于简化网络服务的开发,如TCP/IP和UDP通信。在Mina中,ByteBuffer的使用是至关重要的,因为它提供了高效的数据读写机制。本篇将深入探讨Java NIO(非阻塞I/O)中的...

    网络编程(socket、NIO、mina)---demo

    Mina提供了事件驱动和异步的模型,使得开发复杂网络应用变得简单,同时具备了NIO的高性能特性。 在服务端,无论是Socket、NIO还是Mina,都需要创建监听套接字来接收客户端连接,并为每个连接创建一个新的套接字或...

    mina串口通讯

    MINA(Java Multithreaded Network Application Framework)是一个高性能、异步事件驱动的网络应用程序框架,用于简化开发网络服务,包括TCP/IP和UDP/IP协议。本文将详细介绍如何利用MINA框架实现在Java中进行串口...

    mina-core-2.0.0-RC1.jar,mina-filter-compression-2.0.0-RC1.jar

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个Java框架,专为开发高性能和高度可扩展的网络应用程序而设计。MINA 提供了一种抽象层,允许开发者独立于传输协议(如TCP/IP或UDP/IP)来...

    mina-core-2.0.0-M1-sources.jar

    mina-core-2.0.0-M1-sources.jar是构建mina框架的主要文件

    mina-http-2.0.7.jar.zip_mina_mina 获取POST_mina-http_mina-http-2.0

    MINA(Multipurpose Infrastructure for Network Applications)是一个强大的网络应用程序框架,它由Apache软件基金会开发,主要用于构建高性能、高效率的网络服务。MINA的核心设计目标是提供一个与传输协议无关的...

    Mina NIO Socket

    《Mina NIO Socket:深度解析与应用》 在Java世界中,网络编程是一个不可或缺的部分,而Mina NIO(Non-blocking I/O...通过深入理解和应用Mina,开发者能够构建出高性能、可扩展的网络应用,满足各种复杂的业务需求。

    Java springboot 整合mina 框架,nio通讯基础教程,mina框架基础教程.zip

    同时,“Netty快速入门视频(52im.net).txt”虽然不是直接与Mina相关的,但Netty也是基于NIO的高性能网络库,学习它的资料也能加深对NIO的理解。最后,“MinaDemo”可能是Mina框架的一个示例项目,你可以通过运行和...

Global site tag (gtag.js) - Google Analytics