时间:2024-04-23
鲁兆硕
南阳农业职业学院
Java在高并发网络编程中的应用
鲁兆硕
南阳农业职业学院
简单介绍目前多种编程语言,详细探讨Java NIO原理与应用,对Mina与Netty框架的原理与特性详细进行描述。
Java;网络编程;NIO技术;Mina;Netty
当前约有100余种常见编程语言,使用较多的有30多种,而Java在诸多编程语言中,很多时候排在首位。不同编程语言各有特点与优势,每种编程语言在产生的背景环境中,都可发挥出最佳效果。如C语言在系统级编程及底层程序编写中应用广泛;而C语言的延伸版C++则在较高程序的编写中提高了编写效率;PHP编程语言在Web应用的快速开发中应用效果显著。本文研究的Java编程语言则在网络编程中效果较好。现阶段,互联网的访问压力较大,如微博、搜索引擎、社交网络等,采用Java对高并发网络程序进行编写,效率与速度均比较理想。
当前,Java的不同版本功能也有所不同,如在1.4版本中,具有哦NIO相关的API,极大的提升了Java的网络编程能力。现阶段不联网中高并发应用主要包含两类:单数据源与多数据源,Java在这两种高并发模式下可选择不同的处理模式。
单数据源情况下,添加到request等待队列,只要队列长度不为零,则request按排列顺序依次处理,等待队列中的request通过连续池循环完成。在request取出后,在连接池内选择空闲链接,发送request请求,并做好数据接收的准备,数据接收完成后,利用response将数据返回给用户,链接重新进入连接池。如果连接池没没有空闲链接,则对连接池的容量进行检查,看是否到达上限,如果没有,则建立新链接,并将链接添加到连接池进行使用;反之,等待并轮询,在有空闲链接的时候再对request进行处理。对每个request进行处理时,注意超时链接,如果存在,则重置链接,防止等待队伍出现阻塞情况。
多数据源情况下,需要对NIO技术进行应用,比单数据源要复杂。如果仍采用单数据源处理方法,假如从n个数据源内,request需要获得数据,采用串行处理方式,每个数据源花费时间为t,那么处理一个request就需要花费n×t的时间,花费的时间长是一方面,对处理性能也会产生极大影响。而Java1.4版本中,增加了NIO技术,对多数据源的并发请求可高效处理,NIO中配置Socket,在一个request处理中,可并发向多数据源同时发出请求,不需要逐一等待返还数据,在一个线程内即可完成。这种处理模式下,程序始终处于忙碌状态,但不会由于某个数据源连接阻塞,导致整体性能受到影响。
2.1 Mina框架
基于Java NIO出现Mina网络编程应用框架,Mina框架的应用,开发出的网络应用程序扩展性好、高并发,且开发速度快捷、方便。现阶段,Mina的版本也比较多,Mina2.3中提供了Client封装与Server封装,Mina框架不管是在服务器端还是客户端应用程序的开发中,都非常方便。Mina将网络应用程序地层的数据传输与应用程序分开,开发人员不需要花大量时间处理底层逻辑,只需要专心对应用程序的业务逻辑进行研究即可。Mina也是在NIO技术基础上实现的,属于非阻塞通信的网络编程框架,其不同之处子对对阻塞方式的请求也支持。Mina最主要的特点是业务应用逻辑与底层网络通信逻辑分离,程序耦合性降低,这是很多应用框架所不具备的,并且是发展的一个方向。IoServer、IoHandler、IoSes⁃sion、IoFuture及IoFiter是Mina框架的核心,在整个框架中,这些因素具有重要作用。
2.2 Netty框架
Netty与Mina框架相同,都是基于NIO技术实现的Netty为异步网络通讯框架,对服务器段与客户端进行封装。Channel、Buffer及Event是Netty框架的三个基本组成部分,在这三部分基础上建立Netty所有的上层特性。Netty框架的组建中,对多种协议的特点进行了吸收,包含FTP、SMTP、HTTP等,通过设计,使Netty在网络编程应用中效果非常理想。
2.3 Mina框架与Netty框架对比
两种编程框架都表现的非常优秀,对两种编程框架的学习,可使网络编程效率明显提高。Mina框架和Netty框架不仅仅是简单的对Java NIO进行封装,更重要的是为开发者提供了使用的平台。两种编程框架在实践中都得到了验证,能够有效节约开发实践,程序的扩展性与稳定性均比较理想。
Mina框架与Netty框架学习也比较简单,但要将两种编程框架强大的功能和丰富的特性完全发挥出来,是非常难的,一方面要对Java基础牢固进行掌握,并对Java NIO机制深入理解,另一方面还要对框架本身进行深入研究,对源代码认真分析阅读,才能对整个框架真正的理解和有效的利用。虽然Mina框架与Netty框架比较类似,但各自均有自身独特的特点,Mina在数据传输与接收性能方面较强大,拥有Filter机制,封装数据程度高,在以数据传输为主要业务的服务器中应用效果较好,如FTP、文件共享等服务器中。而Netty框架在访问性能上优于Mina框架,在高并发互联网中Net⁃ty更适合饮用,如新媒体、社交网络中的应用。因此,选择何种编程框架,要与具体应用结合进行选择。
当前,互联网的发展速度非常快,各种新应用不断涌现,对于编程人员而言,要求不断推出新产品。在这种情况下,对于IT从业人员来说,选择成熟的模块与框架,可以提高应用开发的速度。而Java的特性正好符合这一需求,其用于多种成熟的框架,而对于编程人员来说,需要对Java的性能广泛了解,对其包含的不同框架,能够合理进行选择。
[1]王凤玲.利用Java编程实现网络功能[J].电子技术,2012,08(14):15-16.
[2]钱娟.JAVA网络编程的探讨[J].煤炭技术,2012,11(20):258-260.
[3]李政.试论Java编程的现状及其发展前景[J].电子制作,2013, 19(06):81.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!