女儿的出生中断了一段时间的开发。现在就高性能网络处理方式的问题做个总结
所谓高性能,我们这里指在大量并发连接时还有相当高的请求处理速度。提高单连接的请求处理速度这里不讨论。我们这里采用 p=处理速度/连接数 作为衡量性能的指标。
java中最传统的socket处理方法是同步socket,每个连接建立一个线程阻塞等待数据的到达,这种方式很适合于低连接数的应用,但是在大量连接时会由于频繁的线程间切换导致性能大幅降低。这种方式下只能优化线程创建时间,也就是使用线程池。
jdk1.4中引入了nio处理网络连接,实际上,sun对于nio的实现也仅仅是使用了select(见jdk源代码)。socket函数中的select实现了一个基于事件的解决方案,可以只用一个线程去等待多个socket事件的发生,在一定程度上解决了多线程切换带来的性能降低。它的缺点是一次只能处理一个事件,而且其监视的句柄也有限制。实际使用中它对性能的提升也非常有限。(winsock和bsd的select区别这里也暂不讨论)
纯java中能够使用的方法基本上只有上述两种,所以如果选择使用纯java,是很难应付高性能的应用的。所幸我们还有JNI.....
超越了java,我们不得不谈到本地平台的区别上来.....
windows平台下比较先进的模型是完成端口+重叠IO,完成端口可以看作增强版的select,它可以支持更大量的句柄,并且可以一次返回多个事件。重叠IO是另一个强大的工具,它允许用户
异步的进行通讯操作,而且还能允许用户
自己管理传输缓冲。使用这二者的组合,完全可以把所有端口的所有传输数据分成一个个等长的小块,让cpu进行基于定长数据块的处理。看起来像什么?是不是更像流水线?这种方式可以处理大量的连接而不会使性能降低很多。
linux平台下使用的是epoll,功能很像完成端口,也支持一次返回多个事件。只不过没有重叠io的支持,不知道这种模型赶不赶得上windows下的方案?
(补充一点:jdk1.5 update9 之后,linux下的nio已经支持了epoll)
无论是完成端口还是epoll,我们的程序中都不再需要大量的线程了,但是仅仅使用一个线程完成所有请求的处理这种方式也是不可取的,因为很多情况下,系统都可能会对某些资源进行等待,这样就会降低综合的连接处理速度。比较好的方法是按需使用线程,在不大可能出现等待的逻辑中使用单独线程完成,在可能出现等待的逻辑中建立少量线程用多条流水线的处理方式去完成任务。
使用完成端口或者epoll的解决方案,java在大连接处理上的能力将会大大提高,只不过这时候java就不会再成为项目中的主导,看起来会更像一个嵌入式的解释器...
分享到:
相关推荐
文档中特别提到了eventlet框架,这是一个支持异步IO操作的库,它利用了Greenlets来实现轻量级的并发控制,特别适合构建高性能网络应用。 4. IO模型的优化与选择 在服务器并发编程中,除了选择合适的编程模型之外,...
基于Bitmap数据结构的数据压缩技术是一种针对线性存储结构的有效压缩方法...Bitmap技术是一种能有效改善网络处理算法存储空间性能的通用技术,并给未来高性能网络处理算法设计提出以及现有算法的改进都提供了启发思路。
根据提供的标题、描述以及部分内容,我们可以总结出关于“实战分享:搭建高性能集群”的详细知识点。 ### 实战分享:搭建高性能集群 #### 一、引言 高性能计算(High Performance Computing, HPC)是指利用高性能...
在AI领域,高性能计算主要是指能够满足AI应用中大数据处理和深度学习算法训练需求的计算能力,通常要求具备高度的并行处理能力和高速的I/O性能。 3. 大数据: 大数据(Big Data)是指传统数据处理软件难以处理的大...
根据给定的文件信息,我们可以总结出关于Java的高性能计算研究的关键知识点,这些知识点主要集中在Java在高性能计算领域的局限性以及解决这些问题的策略上。 ### Java的高性能计算研究 #### 引言 Java语言因其跨...
【高性能ASP.NET应用程序的探讨与研究】 在当前的互联网时代,高性能的Web应用程序已经成为企业级应用的必备条件,尤其是在ASP.NET框架下开发的应用程序。ASP.NET是由微软公司推出的用于构建动态网站、Web应用和Web...
总结来说,高性能计算在海洋领域的应用是多方面的,它极大地提升了海洋科学研究的效率和准确性,为应对全球环境变化、海洋资源开发、海洋环境保护提供了强有力的技术支持。未来,随着计算技术的持续进步,高性能计算...
【高性能锌离子电池电解质的设计与应用研究】 在当今能源领域,锌离子电池因其资源丰富、安全性高以及环境友好等特点,被广泛视为替代传统锂离子电池的一种潜在选择。电解质作为锌离子电池的核心组成部分,其性能...
随着数字化转型的加速推进,高性能计算已成为推动科学研究、工程创新和社会发展的重要力量。 #### 二、高性能处理器设计的关键技术及应用案例 ##### 1. 密码处理器:国产化关键技术 密码处理器作为信息安全领域的...
4. **高性能计算(HPC)技术**:这包括并行计算、分布式计算、云计算与超级计算的结合,以及优化算法在提高计算效率方面的作用。 5. **超级计算机硬件组件**:报告可能详细解析超级计算机的硬件结构,如处理器(CPU...
这份报告名为《IT通讯类电子器件行业高性能通用变频器领域分析报告》,显然是一份针对IT通讯领域的电子器件产业的市场分析报告,专注于高性能通用变频器。由于报告内容实质部分未提供,以下内容将基于标题和描述进行...
本报告将总结项目的理论与实践研究成果,呈现网络性能与数据业务指标之间的内在联系,并提出相应的优化策略。 首先,项目在理论上对网络性能与数据业务指标之间的联系进行了系统分析。数据业务性能指标主要包括数据...
基于Netty的高性能网络编程实战 本项目是《Netty 实战》(Netty In Action)一书的中文版代码清单,旨在帮助开发者理解和掌握Netty框架的高性能网络编程技术。项目包含了从基础到高级的多个示例,覆盖了Netty的...
Cooley-Tukey FFT 算法高性能实现与优化研究 Cooley-Tukey FFT 算法是处理器基础软件生态最关键的算法之一,是计算离散傅里叶变换(discrete Fourier transform,DFT)或其逆运算的快速算法,并将算法复杂度由 O(n2...
这份市场调研报告详细分析了高性能计算的发展现状、服务领域、客户群体、盈利模式以及收费情况,并列举了各领域的应用软件。 一、高性能计算发展现状 随着信息技术的飞速进步,高性能计算能力已经成为了科学研究和...
- 报告指出,随着5G网络、云计算、物联网等新技术的快速发展,对网络安全产品提出了更高的要求,NTA/NDR类产品的技术能力和应用场景相应地得到了拓展和深化。 - 在市场应用现状方面,报告强调了NTA/NDR产品在不同...
2. **社交媒体和网络数据**:社交媒体平台如Twitter每秒产生数千条新内容,而互联网的数据量更是庞大,这些都对高性能NLP提出了挑战。 **应用实例** 1. **自动摘要**:通过高性能NLP,可以快速生成新闻文章或长...
人们对移动网络高性能的追求,推通信技术从 2G 向4G 演变。但随着移动互联网快速发展,现有 4G 网络的速率、时 延已无法满足人们对高清视频、全景直播及沉浸式游戏业务的极致体验,移动通信技术需要向下一代演进。另...