一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

压测数据的处理方法、系统及计算机可读存储介质与流程

2021-11-09 21:13:00 来源:中国专利 TAG:
1.本技术涉及智能家居
技术领域
:,尤其涉及一种压测数据的处理方法、系统及计算机可读存储介质。
背景技术
::2.在微服务架构中,生产环境全链路压测,是指基于实际的生产上的业务场景、系统容量和配置,模拟批量真实用户请求,对生产业务链涉及的各个节点进行压力测试,通过全链路压测,提前发现系统在业务量激增下的瓶颈和风险。3.线上压测涉及到应用系统、缓存系统、存储系统及消息系统,在压测过程中,用户真实流量和压测流量是同时存在的,那么,压测的数据和真实用户的行为数据如果混在一起,会导致真实用户的行为数据不可用。技术实现要素:4.本技术提供了一种压测数据的处理方法、系统及计算机可读存储介质,能够有效区分流量来源,避免压测的数据与真实用户的行为数据混淆。5.第一方面,本技术提供了一种压测数据的处理方法,所述处理方法包括:6.接收http请求,所述http请求包括http请求头;7.通过接口网关将所述http请求传递至微服务应用;8.控制所述http请求头的流量标识在所述微服务应用中进行传递,产生流量数据;9.根据所述流量标识确定所述http请求头对应的流量类型;10.若所述流量类型为压测流量,则将所述压测流量对应的流量数据在redis缓存和/或mysql数据库中与压测流量对应的目标地址进行读/写操作。11.第二方面,本技术还提供了一种压测数据的处理系统,所述压测数据的处理系统包括:12.存储器,用于存储计算机程序;13.处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述中任一项所述的压测数据的处理方法。14.第三方面,本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述中任一项所述的压测数据的处理方法。15.本技术公开了一种压测数据的处理方法、系统及计算机可读存储介质,通过在http请求头中设置流量标识,以便于区分该http请求头对应的流量为压测流量或用户行为流量;通过接口网关,将带有流量标识的http请求头传递至微服务应用,以便于微服务应用对流量标识进行传递,使得在生产业务链涉及的各个节点进行压力测试时,能够有效区分压测流量及用户行为流量,并且,若所述流量类型为压测流量,将所述压测流量对应的流量数据缓存到redis与所述压测流量对应的目标地址,和/或将所述压测流量对应的流量数据保存在mysql数据库中与所述压测流量对应的目标地址,以进行读/写操作,保证不影响用户行为流量。附图说明16.为了更清楚地说明本技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。17.图1是一实施例中压测数据的处理系统的结构示意图;18.图2是一实施例中压测数据的处理方法的流程示意图;19.图3是流量标识在一个微服务应用中传递的流程示意图;20.图4是是微服务应用之间的流量标识传递的流程示意图;21.图5是本发明压测数据的处理系统的结构示意性框图。具体实施方式22.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。23.附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。24.本技术的实施例提供了一种压测数据的处理方法、系统及计算机可读存储介质,能够有效区分流量来源,避免压测的数据与真实用户的行为数据混淆。25.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。26.请参阅图1,图1为本技术的实施例提供的一种压测数据的处理系统,所述处理系统可以包括接口网关zuul、微服务应用springboot、redis、mysql数据库;且接口网关zuul、微服务应用springboot、redis、mysql数据库之间进行数据交互。27.spring是一个开源框架,是一个轻量级的java开发框架,springboot是所有基于spring开发的项目的起点,微服务应用springboot的设计是为了尽可能快的跑起来spring应用程序并且尽可能减少配置文件,即微服务应用springboot默认配置了很多框架的使用方式。28.本案是一种基于微服务框架springcloud,微服务框架springcloud是一系列框架的有序集合,它利用springboot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用springboot的开发风格做到一键启动和部署。29.本案基于实际的生产上的业务场景、系统容量和配置,模拟批量真实用户请求,对生产业务链涉及的各个节点进行压力测试,以便于提前发现系统在业务量激增下的瓶颈和风险。30.需要说明的是,该压测数据的处理方法也可应用于压测数据的处理系统,例如,压测数据的处理系统接收http请求,所述http请求包括http请求头;通过接口网关将所述http请求传递至微服务应用;控制所述http请求头的流量标识在所述微服务应用中进行传递,产生流量数据;根据所述流量标识确定所述http请求头对应的流量类型;若所述流量类型为压测流量,将所述压测流量对应的流量数据缓存到redis与所述压测流量对应的目标地址,和/或将所述压测流量对应的流量数据保存在mysql数据库中与所述压测流量对应的目标地址,以进行读/写操作。31.以下以该压测数据的处理方法应用于中控设备为例进行解释说明。32.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。33.请参阅图2,图2是本技术一实施例提供的压测数据的处理方法的流程示意图。该压测数据的处理方法可以包括步骤s10至步骤s50,具体可以如下:34.步骤s10,接收http请求,所述http请求包括http请求头。35.具体地,在进行全链路压测时,压测工具如jmeter,或者是指定的压测工具发出向微服务应用发出请求,即http请求信息,http请求信息由3部分组成:(1)请求方法uri协议/版本(2)请求头(requestheader)(3)请求正文。36.在一些实施方式中,针对压测工具如jmeter,或者是指定的压测工具发出的http请求,均在http请求头中设置测试标识,例如,在http请求头中定义test_req头,值为true时,标识为测试流量,其余情况为真实用户行为对应的正式流量。37.步骤s20,通过接口网关将所述http请求传递至微服务应用。38.具体地,接口网关zuul在接收到http请求后,对http请求进行检测,若http请求为非敏感的请求头信息,则直接转发所述http请求至微服务应用。39.在一些实施方式中,若http请求中带有敏感的请求头信息,则无法转发该http请求信息。40.在一些实施方式中,对添加了test_req的请求头,很明显为非敏感请求头,因此,直接转发至微服务应用。41.需要说明的是,接口网关zuul接收到的http请求,不局限于带有test_req的请求头,也可以是其他类型的请求,比如,用户在使用该压测数据的处理系统产生的请求也通过该接口网关zuul转发。42.步骤s30,控制所述http请求头的流量标识在所述微服务应用中进行传递,产生流量数据。43.具体地,微服务应用在接收到http请求头后,如图3所示,图3是步骤s30中流量标识在一个微服务应用中传递的流程示意图。步骤s30可以包括:44.步骤s31,利用开源组件,控制所述http请求头在所述微服务应用中进行线程传递。45.在一些实施方式中,http请求头的流量标识在所述微服务应用中进行传递,首先,需要将流量标识进行存储,针对同一个微服务应用的同一线程,若所述http请求头在所述微服务应用中的同一个线程执行任务时,则通过所述线程本地变量threadlocal对所述http请求头进行传递。在同一线程内,使用线程本地变量threadlocal可以在同一线程内的任意位置获取到流量标识。46.针对同一个微服务应用的不同线程,若所述http请求头在所述微服务应用中的线程池执行任务时,则通过开源组件将所述线程本地变量作为任务参数,且基于所述任务参数对所述http请求头进行传递。具体地,针对线程池中不同线程,线程本地变量threadlocal是无法传递子线程的,因此,需要开源组件transmittablethreadlocal进行跨线程本地变量传递。即,对于已经存在的线程池,在传入线程池任务的时候,将本线程池的threadlocal作为任务参数的一部分,且基于所述任务参数对所述http请求头进行传递。47.通过开源组件,解决了http请求头的流量标识在线程内部或线程之间的存储及传递。48.步骤s32,通过预设的拦截器,在所述线程传递过程中对所述http请求头进行拦截操作,得到所述http请求头。49.在一些实施方式中,在解决了http请求头在同一个微服务应用中的同一线程或线程池中的存储及传递问题后,通过增加的预设的拦截器,在所述线程传递过程中对所述http请求头进行拦截操作,得到所述http请求头。50.步骤s33,从所述http请求头中提取流量标识,且将所述流量标识保存在流量标识对象中,且产生流量数据。51.在一些实施方式中,在拦截器拦截到http请求头后,从所述http请求头中提取流量标识,且将所述流量标识保存在流量标识对象中,且产生流量数据。流量标识对象是流量标识上下文tracecontext,是微服务应用使用的专门用来保存流量标识的对象,从而完成在同一个微服务应用中的流量标识传递。52.在一些实施方式中,由于在压测数据的处理系统中,有多个微服务应用,如图1所示,有微服务应用a及微服务应用b,在完成同一个微服务应用中的流量标识传递及存储后,还需要进行微服务应用之间的流量标识传递。53.具体地,请参阅图4,图4是微服务应用之间的流量标识传递的流程示意图。54.具体为:55.步骤s34,所述流量标识对象中获取所述流量标识;56.步骤s35,将所述流量标识写入跨微服务应用请求头中,以供下游微服务应用能够拦截到上游微服务应用发送的流量标识;其中,所述微服务应用包括上游微服务应用及下游微服务应用。57.具体地,微服务应用a作为上游微服务应用,微服务应用b作为下游微服务应用,在流量标识完成在微服务应用a中的传递之后,微服务应用b设有预设拦截器,在微服务应用a将http请求头中的流量标识发往微服务应用b时,将流量标识写入到请求头中,此时,下游的微服务应用b在请求头中可以通过预设拦截器拦截得到,同样的,可以将请求头中的流量标识存储在流量标识对象中。58.在一些实施方式中,流量标识对象可以确定所述流量标识对应的流量类型为测试流量或正式流量。59.例如,请求头中的test_req头,值为true时,标识为测试流量,否则,为真实用户的行为数据。60.需要说明的是,在流量标识传递及存储的过程中,产生的数据,为对应的流量数据。61.通过微服务应用对流量标识的传递、存储及识别,有效区分流量标识对应的流量类型为测试流量或正式流量,以便于针对不同的流量标识,做不同的存储或其他方式的处理。62.步骤s40,根据所述流量标识确定所述http请求头对应的流量类型。63.具体地,在流量标识对象可以确定所述流量标识对应的流量类型为测试流量或正式流量。64.步骤s50,若所述流量类型为压测流量,将所述压测流量对应的流量数据缓存到redis与所述压测流量对应的目标地址,和/或将所述压测流量对应的流量数据保存在mysql数据库中与所述压测流量对应的目标地址,以进行读/写操作。65.具体地,在流量标识对象可以确定所述流量标识对应的流量类型为测试流量后,将所述压测流量对应的流量数据缓存到redis与所述压测流量对应的目标地址,以进行读/写操作。66.在一些实施方式中,缓存到redis时,可以给所述压测流量对应的流量数据添加预设格式标签,得到标签数据;在所述redis缓存中对标签数据进行序列化处理后存储。67.例如,对于测试流量,增加预设格式标签,比如有固定的前缀,shadow_,得到一个标签数据,然后,将该标签数据进行序列化处理,即,在redis中,将数据保存进去前,需要将数据转换为二进制字节流,序列化是将java对象转换为字节流的过程,在转换为字节流以后再进行存储。在需要用该数据时,则从redis缓存中读取出来即可,从而实现在redis中的读/写操作。68.若流量类型为正式流量,可以将正式流量对应的流量数据直接缓存到redis中,无需增加预设标签,从而有效区分在redis中的流量数据对应测试流量或正式流量。69.在流量标识对象可以确定所述流量标识对应的流量类型为测试流量后,将所述压测流量对应的流量数据保存在mysql数据库中与所述压测流量对应的目标地址,以进行读/写操作。70.在一些实施方式中,保存在mysql数据库中时,可以将测试流量的流量数据写入到数据库服务器上的影子库中。如生产的库名为:user,则对应的影子库为:shadow_user。在实现上,为了对业务逻辑代码无影响,通过拦截器hibernate实现。在需要用该数据时,则从mysql数据库中读取出来即可,从而实现在mysql数据库中的读/写操作。71.若流量类型为正式流量,可以将正式流量对应的流量数据直接缓存到mysql数据库中,无需存储到影子库,从而有效区分在mysql数据库中的流量数据对应测试流量或正式流量。72.为了不影响用户真实行为的数据,写入后的数据为压测的数据。写入数据可以在其他压测环节中使用到,例如先模拟用户正常注册,再模拟用户正常登录,则登录的压测流量会使用到上一步生成的压测数据。73.本技术公开了一种压测数据的处理方法、系统,通过在http请求头中设置流量标识,以便于区分该http请求头对应的流量为压测流量或用户行为流量;通过接口网关,将带有流量标识的http请求头传递至微服务应用,以便于微服务应用对流量标识进行传递,使得在生产业务链涉及的各个节点进行压力测试时,能够有效区分压测流量及用户行为流量,并且,若所述流量类型为压测流量,将所述压测流量对应的流量数据缓存到redis与所述压测流量对应的目标地址,和/或将所述压测流量对应的流量数据保存在mysql数据库中与所述压测流量对应的目标地址,以进行读/写操作,保证不影响用户行为流量。74.示例的,若所述流量类型为压测流量之后,所述处理方法包括:在接收到第三方接口的调用请求时,通过模拟接口返回所述压测流量对应的流量数据的处理结果。75.具体地,在确定流量类型为压测流量之后,对于第三方接口的调用,即在接收到第三方接口的调用请求时,判断该流量标识是否为测试流量,若该流量标识为测试流量,则通过模拟接口mock返回结果的方式处理。76.若该流量标识为正式数据,则直接返回处理结果。77.针对微服务架构中的消息队列,需要在消息发送客户端中判断,如果当前是测试流量请求,则不发送消息到消息队列中。78.如图5所示,图5为一个实施例中提供的压测数据的处理系统的结构示意性框图。该压测数据的处理系统10包括处理器11和存储器12,处理器11和存储器12通过系统总线13连接,其中,存储器12可以包括非易失性存储介质和内存储器。79.非易失性存储介质可存储计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行所述计算机程序时实现任意一种压测数据的处理方法。80.处理器11用于提供计算和控制能力,支撑整个压测数据的处理系统的运行。81.内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行所述计算机程序时实现任意一种压测数据的处理方法。82.本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所涉及的压测数据的处理系统的限定,具体的压测数据的处理系统可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。83.应当理解的是,处理器11可以是中央处理单元(centralprocessingunit,cpu),该处理器11还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器11可以是微处理器或者该处理器也可以是任何常规的处理器等。84.其中,在一个实施例中,所述存储器中存储有计算机程序,计算机程序被处理器11执行时,使得处理器执行所述计算机程序时实现以下步骤:85.接收http请求,所述http请求包括http请求头;86.通过接口网关将所述http请求传递至微服务应用;87.控制所述http请求头的流量标识在所述微服务应用中进行传递,产生流量数据;88.根据所述流量标识确定所述http请求头对应的流量类型;89.若所述流量类型为压测流量,将所述压测流量对应的流量数据缓存到redis与所述压测流量对应的目标地址,和/或将所述压测流量对应的流量数据保存在mysql数据库中与所述压测流量对应的目标地址,以进行读/写操作。90.在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:91.利用开源组件,控制所述http请求头在所述微服务应用中进行线程传递;92.通过预设的拦截器,在所述线程传递过程中对所述http请求头进行拦截操作,得到所述http请求头;93.从所述http请求头中提取流量标识,且将所述流量标识保存在流量标识对象中,且产生流量数据。94.进一步地,所述处理器执行所述计算机程序时还实现以下步骤:95.若所述http请求头在所述微服务应用中的同一个线程执行任务时,则通过所述线程本地变量对所述http请求头进行传递;96.若所述http请求头在所述微服务应用中的线程池执行任务时,则通过开源组件将所述线程本地变量作为任务参数,且基于所述任务参数对所述http请求头进行传递。97.在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:98.从所述流量标识对象中获取所述流量标识;99.将所述流量标识写入跨微服务应用请求头中,以供下游微服务应用能够拦截到上游微服务应用发送的流量标识;100.其中,所述微服务应用包括上游微服务应用及下游微服务应用。101.在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:102.通过所述流量标识对象,确定所述流量标识对应的流量类型为测试流量或正式流量。103.在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:104.给所述压测流量对应的流量数据添加预设格式标签,得到标签数据;105.在所述redis缓存中对标签数据进行序列化处理后存储。106.在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:107.将所述压测流量对应的流量数据写入所述mysql数据库中与所述压测流量对应的影子库。108.在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:109.在接收到第三方接口的调用请求时,通过模拟接口返回所述压测流量对应的流量数据的处理结果。110.需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的智能家居设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。111.本技术的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本技术实施例提供的任一项压测数据的处理方法。112.其中,所述计算机可读存储介质可以是前述实施例所述的压测数据的处理系统的内部存储单元,例如所述压测数据的处理系统的硬盘或内存。所述计算机可读存储介质也可以是所述压测数据的处理系统的外部存储设备,例如所述压测数据的处理系统上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。113.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献