完成端口实现高性能服务端通信层关键问题

完成端口实现高性能服务端通信层关键问题

ID:36583442

大小:42.00 KB

页数:10页

时间:2019-05-12

完成端口实现高性能服务端通信层关键问题_第1页
完成端口实现高性能服务端通信层关键问题_第2页
完成端口实现高性能服务端通信层关键问题_第3页
完成端口实现高性能服务端通信层关键问题_第4页
完成端口实现高性能服务端通信层关键问题_第5页
资源描述:

《完成端口实现高性能服务端通信层关键问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、完成端口实现高性能服务端通信层的关键问题摘要:为实现高性能稳定的网络通信服务,对完成端口(iocp)应用中信息识别与提取、资源管理、消息乱序处理3个关键问题进行了分析,提出了iocp参数扩展、内存池、对象池、环形缓冲等改进的解决方法。使用这些方法对iocp底层进行了封装,并设计和实现了面向企业应用的可扩展网络程序通信模块。压力和性能测试结果表明,该模块能在合理资源消耗基础上支持海量并发连接,具有较高的数据吞吐量,在实际项目应用中也表现出了良好的性能。关键词:完成端口;i/o模型;套接字;内存池;环形缓存keyissuesofhighper

2、formanceservercommunicationlayerbyusingi/ocompletionportliaohongjian*,yangyubao,tanglianzhang(networkandmoderneducationtechnologycenter,guangzhouuniversity,guangzhouguangdong510006,china)abstract:inordertoachievehighperformanceandstablenetworkcommunicationservic

3、e,thekeyissuesofclientinformationidentifyingandextracting,resourcemanagementandmessagesequencedealingini/ocompleteport(iocp)developmentwereanalyzed.andtheimprovedmethodsofiocpparameterextension,memorypool,objectpoolandringbufferwereproposedrespectively.onthebasisofunderlyi

4、ngencapsulationforiocpusingthesemethods,ascalablenetworkcommunicationmoduleforenterpriseapplicationswasdesignedandimplemented.theexperimentalresultsshowthatthemodulecansupportmassiveconcurrentconnections,andhashigherdatathroughputbyreasonableresourceconsumption.theproposeds

5、olutionhasalsoshowedgoodperformanceintheactualprojectapplication.keywords:i/ocompleteport(iocp);i/omodel;socket;memorypool;ringbuffer0引言网络服务程序通信层的“高性能”主要表现为对客户端更大的响应规模、更高的并发处理能力、更高的数据吐吞量、更低的系统资源消耗等方面[1],这对服务端通信层采用的技术及设计提出了更高的要求。为此,微软研究数年提出了完成端口(i/ocompleteport,iocp)机制

6、,它把重叠i/o操作完成的事件通知放入系统维护的一个队列,并唤醒某个工作线程来处理相应的消息。重叠操作是在与iocp相关联的一个或多个文件句柄上进行的,大大减少了线程上下文切换,最大限度地提高了系统并发量[2],能满足“高性能”要求。iocp是一个高效但复杂精巧的内核对象,微软的sdk只提供了简单的说明文档和示例代码[3],现有的相关文献或以描述iocp机制的使用方法和步骤为主[4-5],或局限于iocp原理探讨[6],或出于应用项目商业版权的考虑,局限于系统的模块设计[7],对构建大响应规模服务程序时遇到的棘

7、手问题给出全面具体解决方法的较少。在iocp开发中,存在的典型问题有:客户端信息识取、资源管理与访问紊乱、消息乱序,这3个问题的有效解决是构建稳健、高效iocp服务程序的关键。在研究现有资料并结合开发实践基础上,下面讨论这些问题起因并给出解决办法。1iocp关键问题分析1.1客户端信息的识别与提取在iocp应用中必定要处理大量客户端的i/o请求,当大量客户端连接服务器并且一个异步i/o操作成功完成时,服务线程对操作结果进行处理就必须要知道这个i/o是来自哪个客户端,以及i/o数据存在何处(如该socket所对应的客户端sockaddr_

8、in结构体数据、存放网络数据的缓冲区等)。文献[8]给出了map查找的方法,即创建一个与该socket一一对应的客户端底层通信对象并将对象放入一个类似于list或

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。