基于Netty的Rpc客户端在性能测试平台中的实现方法、系统、服务器及存储介质技术方案

技术编号:21059634 阅读:31 留言:0更新日期:2019-05-08 06:39
本发明专利技术涉及一种基于Netty的Rpc客户端在性能测试平台中的实现方法、系统、服务器及存储介质,所述实现方法通过性能压测平台发送的请求消息至Rpc客户端,通过客户端进行消息编码再发送至服务端,服务端返回响应消息至客户端解码后返回性能压测平台,并通过固定长度编解码解决Tpc网络的粘包,通过时间轮解决Rpc客户端请求超时,并通过异步机制提高资源利用率降低线程数进而节约施压资源。

The Implementation Method, System, Server and Storage Media of RPC Client Based on Netty in Performance Testing Platform

【技术实现步骤摘要】
基于Netty的Rpc客户端在性能测试平台中的实现方法、系统、服务器及存储介质
本专利技术涉及性能压测及全链路压测领域,具体涉及一种基于Netty的Rpc客户端在性能测试平台中的实现方法、系统、服务器及存储介质。
技术介绍
基于Socket的Rpc通信协议开发的Rpc客户端版本,但基于Socket阻塞存在一些问题,如压测并发大导致Tcp粘包,导致压测数据偶发错误使得压测失败,同时资源消耗大,针对斗鱼业务有些如弹幕类压测,Socket的bio模型限定了一个弹幕发送必须等待对应的返回后才可以退出线程阻塞,导致线程消耗过大。
技术实现思路
鉴于现有技术存在的问题,本专利技术的目的是提供一种基于Netty的Rpc客户端在性能测试平台中的实现方法、系统、服务器及存储介质,基于Netty设计RPC协议客户端,通过固定长度编解码解决Tpc网络的粘包;通过时间轮解决Rpc客户端请求超时;通过Future对象实现异步转同步;通过心跳事件进行保活,避免Socket的定时发送心跳包,并通过异步机制提高资源利用率降低线程数进而节约施压资源。为了实现上述目的,本专利技术采用的技术方案为一种基于Netty的Rpc客户端在性能测试平台中的实现方法,所述方法包括以下步骤:S1、性能压测平台发送请求消息至Rpc客户端,同时获取Future对象;S2、Rpc客户端将获取的请求消息进行编码后,将编码后的请求消息发送至服务端;S3、服务端接收编码后的请求消息并返回响应消息至Rpc客户端,所述Rpc客户端进行响应消息解码;S4、Rpc客户端将解码后的响应消息填充Future对象,同时性能压测平台获取响应消息。在上述技术方案中,所述步骤S2还包括以下步骤:S21、所述Rpc客户端接收请求消息后,通过心跳处理机制,由RPC客户端隔一段时间发送一个心跳包至服务端;S22、所述Rpc客户端将编码后的请求发送至服务端的同时Rpc客户端开始计时,若编码后的请求消息超时无法发送,将返回Rpc客户端通过时间轮超时处理;S23、处理后的超时消息填充至Future对象,同时性能压测平台获取超时信息。在上述技术方案中,所述步骤S3中,若返回的响应消息发生Tcp粘包,则通过固定长度解码器进行处理。在上述技术方案中,所述步骤S22中,若Rpc客户端接收到服务端返回的响应消息,则移除消息计时,释放内存占用。在上述技术方案中,所述步骤S4中的Future对象,等待服务端响应过程中,通过阻塞施压线程等待响应或超时消息。本专利技术还公开一种基于Netty的Rpc客户端在性能测试平台中的实现系统,所述系统包括请求模块、编码模块、解码模块以及获取模块;请求模块,用于当性能压测平台发送请求消息至Rpc客户端,同时获取Future对象;编码模块,用于在Rpc客户端将获取的请求消息进行编码后,将编码后的请求消息发送至服务端;解码模块,用于在服务端接收编码后的请求消息并返回响应消息至Rpc客户端,所述Rpc客户端进行响应消息解码;获取模块,用于当Rpc客户端将解码后的响应消息填充Future对象,同时性能压测平台获取响应消息。在上述技术方案中,所述编码模块包括:保活模块,用于当所述Rpc客户端接收请求消息后,通过心跳处理机制,由RPC客户端隔一段时间发送一个心跳包至服务端;时间轮模块,所述Rpc客户端将编码后的请求发送至服务端的同时Rpc客户端开始计时,若编码后的请求消息超时无法发送,将返回Rpc客户端通过时间轮超时处理;超时写入模块,用于将处理后的超时消息填充至Future对象,同时性能压测平台获取超时信息。在上述技术方案中,所述解码模块包括:粘包处理模块,用于当返回的响应消息发生Tcp粘包,则通过固定长度解码器进行处理;移除计时模块,用于当Rpc客户端接收到服务端返回的响应消息时,则移除消息计时,释放内存占用。本专利技术还公开一种基于Netty的Rpc客户端在性能测试平台中的实现系统的服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述一种基于Netty的Rpc客户端在性能测试平台中的实现方法的步骤。本专利技术还公开一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述一种基于Netty的Rpc客户端在性能测试平台中的实现方法的步骤。本专利技术一种基于Netty的Rpc客户端在性能测试平台中的实现方法、系统、服务器及存储介质,具有以下有益效果:通过固定长度编解码解决Tpc网络的粘包;通过时间轮解决Rpc客户端请求超时;通过Future对象实现异步转同步;通过心跳事件进行保活,避免Socket的定时发送心跳包,并通过异步机制提高资源利用率降低线程数进而节约施压资源。附图说明图1为本专利技术实施例一提供的一种基于Netty的Rpc客户端在性能测试平台中的实现方法的流程图;图2本专利技术实施例二提供一种基于Netty的Rpc客户端在性能测试平台中的实现系统模块图;图3为本专利技术实施例三提供的服务器的结构示意图。具体实施方式本专利技术提供一种基于Netty的Rpc客户端在性能测试平台中的实现方法、系统、服务器及存储介质,通过性能压测平台发送的请求消息至Rpc客户端,通过客户端进行消息编码再发送至服务端,服务端返回响应消息至客户端解码后返回性能压测平台。为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。本专利技术如图1所示实施例一提供基于Netty的Rpc客户端在性能测试平台中的实现方法,所述方法包括以下步骤:S1、性能压测平台发送请求消息至Rpc客户端,同时获取Future对象;其中,性能测试平台的核心功能是产生压力,也就是模拟成千上万的人,对另一个系统进行压力测试。那么要模拟大量用户的行为,就要对用户行为进行预定义,也就是要开发测试脚本。脚本开发者,模拟一个用户行为后,马上就可以获取一个Future对象,Future是Rpc客户端和脚本开发者共同持有,当Rpc客户端完成某个行为后,会去更改这个Future的状态。那么脚本开发者就可以通过不停轮询或阻塞(同步)的方式,等待Future状态变更。即是性能压测平台每发送一个请求会立即获得一个Future对象,所述Future对象提供Future返回,Rpc客户端在Future中进行对应返回业务的处理,该模式尤其适合弹幕消息类发送,需要很少的施压机资源即可产生大量的消息。其中,所述RPC(RemoteProcedureCallProtocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协议。客户端在不必知道调用细节的前提之下,调用远程计算机上运行的某个对象,使用起来就像调用本地的对象一样。目前典型的RPC实现框架有:Thrift(facebook开源)、Dubbo(alibaba开源)等等。RPC框架针对网络协议、网络I/O模型的封装是透明的本文档来自技高网...

【技术保护点】
1.一种基于Netty的Rpc客户端在性能测试平台中的实现方法,其特征在于,所述方法包括以下步骤:S1、性能压测平台发送请求消息至Rpc客户端,同时获取Future对象;S2、Rpc客户端将获取的请求消息进行编码后,将编码后的请求消息发送至服务端;S3、服务端接收编码后的请求消息并返回响应消息至Rpc客户端,所述Rpc客户端进行响应消息解码;S4、Rpc客户端将解码后的响应消息填充Future对象,同时性能压测平台获取响应消息。

【技术特征摘要】
1.一种基于Netty的Rpc客户端在性能测试平台中的实现方法,其特征在于,所述方法包括以下步骤:S1、性能压测平台发送请求消息至Rpc客户端,同时获取Future对象;S2、Rpc客户端将获取的请求消息进行编码后,将编码后的请求消息发送至服务端;S3、服务端接收编码后的请求消息并返回响应消息至Rpc客户端,所述Rpc客户端进行响应消息解码;S4、Rpc客户端将解码后的响应消息填充Future对象,同时性能压测平台获取响应消息。2.根据权利要求1所述一种基于Netty的Rpc客户端在性能测试平台中的实现方法,其特征在于,所述步骤S2还包括以下步骤:S21、所述Rpc客户端接收请求消息后,通过心跳处理机制,由RPC客户端隔一段时间发送一个心跳包至服务端;S22、所述Rpc客户端将编码后的请求发送至服务端的同时Rpc客户端开始计时,若编码后的请求消息超时无法发送,将返回Rpc客户端通过时间轮超时处理;S23、处理后的超时消息填充至Future对象,同时性能压测平台获取超时信息。3.根据权利要求1所述一种基于Netty的Rpc客户端在性能测试平台中的实现方法,其特征在于,所述步骤S3中,若返回的响应消息发生Tcp粘包,则通过固定长度编解码器进行处理。4.根据权利要求2所述一种基于Netty的Rpc客户端在性能测试平台中的实现方法,其特征在于,所述步骤S22中,若Rpc客户端接收到服务端返回的响应消息,则移除消息计时,释放内存占用。5.根据权利要求1所述一种基于Netty的Rpc客户端在性能测试平台中的实现方法,其特征在于,所述步骤S4中的Future对象,等待服务端响应过程中,通过阻塞施压线程等待响应或超时消息。6.一种基于Netty的Rpc客户端在性能测试平台中的实现系统,其特征在于,所述系统包括请求模块、编码模块、解码模块以及获取模块;请求模块,用于当性能压测平台发送...

【专利技术属性】
技术研发人员:张德华
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1