基于Netty的HTTP客户端的设计与实现#金志国1,2,李炜1,2**(1.北京邮电大学网络与交换技术国家重点实验室,北京(100876);5102.东信北邮信息技术有限公司,北京(100191))摘要:能力开放平台是一个提供电信能力开放的移动互联网开放平台,向开发者提供丰富的业务能力,包括:短信、彩信、地图、定位等。能力开放平台接入系统需要异步处理客户端的HTTP请求,而平台内部各个系统间的消息传递也需要使用大量的异步HTTP请求。Netty是一款异步的事件驱动的网络应用开源框架,用于快速开发可维护的高性能、高扩展性协议服务器和客户端。本文简述了通过对开源框架Netty的源码封装,提供方便易用可以发送异步HTTP请求的客户端的设计思路和具体实现。关键词:Netty框架;NIO技术;异步;HTTP客户端.中图分类号:TP311.515TheDesignandImplementationofHTTPClientBasedonNettyJIZhiguo1,2,LIWei1,2(1.StateKeyLabofNetworkingandSwitchingTechnology,BeijingUniversityofPostsand2025303540Telecommunications,Beijing100876,China;2.EBUPTInformationTechnologyCo.Ltd.,Beijing100191,China)Abstract:OpenMobilePlatformisanOpenPlatformprovidingabilityoftelecommunication.Itprovidesdeveloperswithrichbusinessabilities,including:SMS,MMS,maps,positioning,etc.TheaccesssystemofOpenMobilePlatformrequiresasynchronousprocessingHTTPrequestsfortheclient,andvarioussystemsoftheplatformalsoneedtousealargenumberofasynchronousHTTPrequeststosendmessage.Nettyisanasynchronousevent-drivennetworkapplicationsopensourceframework,isusedforrapiddevelopmentofmaintainablehighperformance,highscalabilityprotocolserversandclients.ThispaperbrieflydescribesthedesignideaandconcreteimplementationofusingopensourceframeworkNettytoprovideaconvenientandeasytousehttpclientwhichcansendanasynchronousHTTPrequest.Keywords:Nettyframework;NIOtechnology;asynchrony;HTTPClient0引言云计算是服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。在云计算技术发展日新月异的今天,业界开始更多的转向云平台[1]。能力开放平台是基于PaaS(platformasaservice,平台即服务)提供电信能力开放的移动互联网开放云平台,向开发者提供丰富的业务能力,包括:短信、彩信、地图、定位等[2]。在能力开放平台的接入系统部分,需要处理海量的请求。在用户体验不断提高的要求下,能力开放平台业务处理日益复杂造成交互延迟,传统的Web请求同步模式下业务处理的阻塞造成的延迟已经满足不了高并发需求[3]。在接入系统内部以及接入系统与其他系统之间,多采用HTTP进行数据传输。由接入系统接受客户传来的请求,进行异步处理,但系统内部的信息传输仍然采用同步模式时,则会基金项目:国家973计划项目(No.2013CB329102);国家自然科学基金资助项目(No.61372120,61271019,61101119,61121001,61072057,60902051);长江学者和创新团队发展计划资助(No.IRT1049)作者简介:金志国(1988-),男,硕士研究生,业务网络智能化通信联系人:李炜(1973-),男,副教授,业务网络智能化.liwei@ebupt.com-1-造成阻塞,异步的Web服务器也失去了意义[4]。所以,在云平台项目开发过程中急需要一个可以支持大并发高效稳定的异步HTTP客户端。4550目前,异步HTTP客户端只有ApacheHttpComponents项目的HttpAsyncClient4.0-beta4,但仍然是对外测试版。其他的异步框架,如Mina[5]、Netty和Grizzly,均是以JAVANIO(Non-BlockingIO非阻塞IO)为基础。本文通过调研,选定采用Netty作为底层源码实现异步HTTP客户端。1Netty概述Netty是一款异步的事件驱动的网络应用框架和工具,用于快速开发可维护的高性能、高扩展性协议服务器和客户端[6]。Netty是一个基于JavaNIO客户端/服务器框架,支持快速、简单地开发网络应用,如协议服务器和客户端[7]。Netty具有以下优势[8]:对阻塞和非阻塞的socket提高统一的API;55高度可定制化的线程模型;基于拦截链模式的事件模型有很高的灵活性和...