最近工作中有一个需求,因而产生了一个产品的demo.走了一些弯路,在这里写下来。
需求是这样: 我们需要一台网络客户端服务器,这台服务器做为客户端去连接上万台服务器,实时的从服务器读取不同的文本,然后解析,清洗,转换入库。对端文本服务器的ip:port 及对应的文本格式从通过一条连接获取,与爬虫不同的是要维持持久的长连接。
首先想到的是mina.虽然没有使用过,但mina的大名如雷贯耳。用mina来管理连接,使用filter来处理文本,最后handler统一入库。但是两天研究下来,发现mina并不能满足需求。
mina的典型应用是在服务端,Acceptor监听连接事件,有客户端到来时,建立连接丢给processor线程池处理,所有的IO统一经过一个filter链。
但是客户端和我想象的完全不同。首先一个Connector并不能管理上万的channel.其次所有的IO事件要经过统一的filter链处理,但需求要求每个连接只经过自己独特的解析转换流程。
mina的每个NIOConnector都会打开一个selector。作为一个客户端服务器需要创建很多channel,但selector却只能有一个或者几个。我想mina应该加入NIOClient的概念:用一个selector来管理很多channel的connector事件。
另外关于NIO性能,相比于传统阻塞IO,如果不需要管理大量IO任务的话,完全没必要使用NIO。开几十个线程能搞定的不要使用NIO,那样并不能增加性能,却增加不少的开发复杂度。NIO比IO性能好是因为,在高并发IO处理时,比如同时处理上万连接的WebServer,相比阻塞IO节省了无效的线程切换时间。低并发IO的线程切换时间占比很少,因此效果提升有限。
相关推荐
5. **Java NIO与Mina**:Mina是一个高性能、轻量级的网络应用框架,它利用了Java NIO的特性来构建网络服务。Mina提供了一套高级API,简化了基于NIO的网络编程,包括TCP和UDP协议的支持,以及过滤器链机制,方便实现...
3. 可扩展性:MINA设计时考虑了可扩展性,允许用户自定义过滤器和协议,以满足不同应用场景的需求。 4. 跨平台:作为Java库,MINA可以在任何支持Java的平台上运行,具备良好的跨平台性。 总结来说,Java NIO和MINA...
《Mina NIO Socket:深度解析与应用》 在Java世界中,网络编程是一个不可或缺的部分,而Mina NIO(Non-blocking I/O)Socket库则是Java开发者实现高性能、高并发网络服务的重要工具。本文将深入探讨Mina NIO Socket...
### 基于MINA构建高性能的NIO应用 #### 概述 MINA作为一款优秀的客户端/服务器架构下的Java服务器框架,凭借其强大的功能和灵活性,在开发...未来随着更多应用场景的拓展和技术的进步,MINA的应用前景将会更加广阔。
本文将通过一个对比实例,探讨一般Socket客户端与Mina NIO (Non-blocking I/O) Socket客户端的差异和特点,帮助开发者理解这两种技术在实际应用中的选择。 首先,普通Socket客户端基于BIO(Blocking I/O)模型,它...
Apache Mina是一个高性能的网络应用框架,主要用于简化网络...通过阅读《深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别》的相关资料,可以更深入地理解这两个类的具体实现和应用场景。
MINA框架通过封装NIO,提供了一种更加面向对象和易于使用的API,使得开发者可以更方便地创建高性能、可扩展的网络应用,如TCP和UDP服务器。 在上述代码中,可以看到如何使用MINA框架初始化一个服务器: 1. `...
MINA 是一个基于 NIO(Non-Blocking I/O)的网络框架,提供了统一的接口来处理 TCP、UDP 和其他机制的通信。MINA 的主要特点是能够处理大量的 socket 连接,并提供了一个高层接口来隐藏 BIO 和 NIO 之间的差异。 ...
相比于传统的阻塞式socket,NIO降低了系统资源的消耗,MINA则进一步简化了NIO的使用,使得开发者能更专注于应用的业务逻辑。对于需要处理大量并发连接的网络应用,如聊天服务器、游戏服务器等,NIO 和 MINA 是理想的...
《基于MINA构建简单高性能的NIO应用》这篇文章深入探讨了如何利用Apache MINA框架来构建高效、非阻塞的网络应用程序。MINA作为一个高性能、轻量级的网络通信框架,为开发者提供了丰富的功能和便利性,使得创建复杂的...
Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"apache-mina-2.0.4.rar"压缩包包含的是Apache Mina 2.0.4版本的源代码,是深入理解和定制Mina的...
它可能还会涉及如何配置和使用MINA的各种组件,如Buffer、Filters、Protocols等,帮助开发者更好地理解和应用MINA到实际项目中。 最后,`Apache_Mina_Server_2.0中文参考手册V1.0.pdf` 是MINA服务器端的中文参考...
压缩包中的文件名揭示了一些关于MINA的特定主题: 1. **基于MINA框架快速开发网络应用程序(转载).html**:这可能是一个教程或指南,教读者如何利用MINA快速构建网络应用,可能包含基本概念、设置步骤和简单示例。 ...
MINA(Minimal Asynchronous Network Application)是一个高性能、基于Java NIO(非阻塞I/O)技术的网络...通过学习MINA和NIO的相关知识,开发者可以提升其在网络编程领域的专业技能,更好地应对复杂的网络应用场景。
MINA 框架的优点在于它提供了一个简洁、灵活、可扩展的网络应用程序开发框架,简化了 NIO 程序开发的难度,使开发者可以集中精力到业务逻辑上来。 3. MINA 框架的组件 MINA 框架的组件包括 Acceptor、FilterChain...
5. **MINA的使用场景**: MINA适用于需要处理大量并发连接的场景,如聊天服务器、游戏服务器、分布式系统等。它的高性能和易用性使得它成为Java开发者构建网络应用的首选框架之一。 6. **MINA 2.0.4的改进**: ...
Netty 是基于 MINA 概念发展起来的另一个 NIO 框架,它在 MINA 的基础上进行了优化和增强,提供了更多的功能和更好的性能,目前在业界得到了广泛应用。Netty 的设计更加现代,API 更加简洁,同时支持更多特性,例如...
这一特性极大地扩展了Mina的应用场景,使其不仅仅局限于传统的网络应用程序,还适用于嵌入式设备等场景。随着Mina的不断发展,其支持的功能正在逐步丰富,为开发者提供了更多可能性。 #### 三、Mina快速入门 #####...
例如,如何配置MINA服务端,如何编写自定义的过滤器和处理器,以及如何优化MINA应用的性能。 在提供的压缩包文件“src”中,可能包含了MINA应用的源代码示例,你可以深入研究这些代码,了解MINA如何与Java语言结合...
Mina和Socket是两种常见的网络通信框架和技术,它们在Java编程环境中被广泛使用。本篇文章将深入探讨如何使用Mina与Socket实现通信,并提供客户端和服务端的实现代码概述。 Mina(全称“MINA: Minimalistic ...