资源描述:
《完成端口实现高性能服务端通信层的关键问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、完成端口实现高性能服务端通信层的关键问题摘要:为实现高性能稳定的网络通信服务,对完成端口(iocp)应用中信息识别与提取、资源管理、消息乱序处理3个关键问题进行了分析,提出了iocp参数扩展、内存池、对象池、环形缓冲等改进的解决方法。使用这些方法对iocp底层进行了封装,并设计和实现了面向企业应用的可扩展网络程序通信模块。压力和性能测试结果表明,该模块能在合理资源消耗基础上支持海量并发连接,具有较高的数据吞吐量,在实际项目应用中也表现出了良好的性能。关键词:完成端口;i/o模型;套接字;内存池;环形
2、缓存keyissuesofhighperformanceservercommunicationlayerbyusingi/ocompletionportliaohongjian*,yangyubao,tanglianzhang(networkandmoderneducationtechnologycenter,guangzhouuniversity,guangzhouguangdong510006,china)abstract:inordertoachievehighpe
3、rformanceandstablenetworkcommunicationservice,thekeyissuesofclientinformationidentifyingandextracting,resourcemanagementandmessagesequencedealingini/ocompleteport(iocp)developmentwereanalyzed.andtheimprovedmethodsofiocpparameterextension,memorypool,obj
4、ectpoolandringbufferwereproposedrespectively.onthebasisofunderlyingencapsulationforiocpusingthesemethods,ascalablenetworkcommunicationmoduleforenterpriseapplicationswasdesignedandimplemented.theexperimentalresultsshowthatthemodulecansupportmassiveconc
5、urrentconnections,andhashigherdatathroughputbyreasonableresourceconsumption.theproposedsolutionhasalsoshowedgoodperformanceintheactualprojectapplication.keywords:i/ocompleteport(iocp);i/omodel;socket;memorypool;ringbuffer0引言网络服务程序通信层的“高性能”主要表现为对客户端更
6、大的响应规模、更高的并发处理能力、更高的数据吐吞量、更低的系统资源消耗等方面[1],这对服务端通信层采用的技术及设计提出了更高的要求。为此,微软研究数年提出了完成端口(i/ocompleteport,iocp)机制,它把重叠i/o操作完成的事件通知放入系统维护的一个队列,并唤醒某个工作线程来处理相应的消息。重叠操作是在与iocp相关联的一个或多个文件句柄上进行的,大大减少了线程上下文切换,最大限度地提高了系统并发量[2],能满足“高性能”要求。iocp是一个高效但复杂精巧的内核对象,微
7、软的sdk只提供了简单的说明文档和示例代码[3],现有的相关文献或以描述iocp机制的使用方法和步骤为主[4-5],或局限于iocp原理探讨[6],或出于应用项目商业版权的考虑,局限于系统的模块设计[7],对构建大响应规模服务程序时遇到的棘手问题给出全面具体解决方法的较少。在iocp开发中,存在的典型问题有:客户端信息识取、资源管理与访问紊乱、消息乱序,这3个问题的有效解决是构建稳健、高效iocp服务程序的关键。在研究现有资料并结合开发实践基础上,下面讨论这些问题起因并给出解
8、决办法。1iocp关键问题分析1.1客户端信息的识别与提取在iocp应用中必定要处理大量客户端的i/o请求,当大量客户端连接服务器并且一个异步i/o操作成功完成时,服务线程对操作结果进行处理就必须要知道这个i/o是来自哪个客户端,以及i/o数据存在何处(如该socket所对应的客户端sockaddr_in结构体数据、存放网络数据的缓冲区等)。文献[8]给出了map查找的方法,即创建一个与该socket一一对应的客户端底层通信对象并将对象放入一个类似于list或