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

基于Protobuf协议动态解析的造数方法及装置与流程

2021-12-04 13:13:00 来源:中国专利 TAG:
基于protobuf协议动态解析的造数方法及装置
技术领域
:1.本发明涉及测试造数
技术领域
:,尤其涉及一种基于protobuf协议动态解析的造数方法、装置、存储介质及计算机设备。
背景技术
::2.随着互联网应用的发展,网络应用服务的性能效率以及数据安全要求越来越高,网络应用服务数据交互使用protobuf数据协议的缓存数据的场景越来越多。protobuf(简称pb)协议文件的数据流是以二进制数据流的形式传输,读写数据时,可通过protoc可执行文件在操作系统下对pb协议文件进行不同网络编程语言的解析,生成对应编程语言的协议代码文件,然后对协议代码文件进行序列化和反序列化后方可使用。3.例如,在应用服务开发测试环节中,对于pb协议的缓存数据存取的应用场景,需要可靠且高效的测试造数工具,便于开发测试人员快速进行明文转换不同的pb协议数据的造数,以应对不同测试场景,进而保障应用服务质量。4.但是,现有的应用服务开发测试环节在使用pb协议进行造数时,需要在每次pb协议文件修改后,重新生成协议代码文件上传到缓存造数工具代码中,然后将明文数据转换成新的pb协议数据写入缓存组件,并重新部署工具服务应用才可正常序列化及反序列化读写数据,该造数过程较为复杂,工作效率较低。技术实现要素:5.本发明的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中应用服务开发测试环节使用pb协议进行造数时的造数过程较为复杂,工作效率较低的技术缺陷。6.本发明提供了一种基于protobuf协议动态解析的造数方法,所述方法包括:7.接收前端页面发送的模拟请求数据,所述模拟请求数据包括造数内容和预先约定的protobuf协议文件描述内容,所述造数内容为依据所述protobuf协议文件描述内容编写的json格式的缓存数据字符串;8.基于所述protobuf协议文件描述内容对所述造数内容进行动态解析,得到二进制数组类型消息,并将所述二进制数组类型消息作为造数后得到的测试数据。9.可选地,所述基于所述protobuf协议文件描述内容对所述造数内容进行动态解析,得到二进制数组类型消息的步骤,包括:10.基于所述protobuf协议文件描述内容构造相应的动态消息类;11.基于所述动态消息类对所述对所述造数内容进行动态解析,得到二进制数组类型消息。12.可选地,所述基于所述protobuf协议文件描述内容构造相应的动态消息类的步骤,包括:13.将所述protobuf协议文件描述内容写入proto文件中,得到描述文件;14.基于所述描述文件生成descriptor文件,所述descriptor文件为二进制文件;15.基于所述descriptor文件构造相应的动态消息类。16.可选地,所述模拟请求数据还包括缓存组件节点和缓存key;17.所述缓存key用于与所述二进制数组类型消息进行配对。18.可选地,所述的基于protobuf协议动态解析的造数方法,还包括:19.基于所述缓存组件节点将所述二进制数组类型消息和所述缓存key写入缓存组件。20.可选地,所述缓存组件节点包括redis节点,所述缓存组件包括redis缓存组件;21.所述基于所述缓存组件节点将所述二进制数组类型消息和所述缓存key写入缓存组件的步骤,包括:22.基于所述redis节点创建与所述redis缓存组件之间的数据连接;23.将所述二进制数组类型消息和所述缓存key写入数据连接后的redis缓存组件中。24.可选地,所述缓存组件节点包括tair节点,所述缓存组件包括tair缓存组件;25.所述基于所述缓存组件节点将所述二进制数组类型消息和所述缓存key写入缓存组件的步骤,包括:26.基于所述tair节点创建与所述tair缓存组件之间的数据连接;27.将所述二进制数组类型消息和所述缓存key写入数据连接后的tair缓存组件中。28.本发明还提供了一种基于protobuf协议动态解析的造数装置,包括:29.数据接收模块,用于接收前端页面发送的模拟请求数据,所述模拟请求数据包括造数内容和预先约定的protobuf协议文件描述内容,所述造数内容为依据所述protobuf协议文件描述内容编写的json格式的缓存数据字符串;30.造数模块,用于基于所述protobuf协议文件描述内容对所述造数内容进行动态解析,得到二进制数组类型消息,并将所述二进制数组类型消息作为造数后得到的测试数据。31.本发明还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述基于protobuf协议动态解析的造数方法的步骤。32.本发明还提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述基于protobuf协议动态解析的造数方法的步骤。33.从以上技术方案可以看出,本发明实施例具有以下优点:34.本发明提供的一种基于protobuf协议动态解析的造数方法及装置,在应用服务开发测试环节使用pb协议进行造数时,测试人员可在前端页面输入相应的造数内容和预先约定的protobuf协议文件描述内容,后端接收到上述数据后,利用预先约定的protobuf协议文件描述内容对造数内容进行动态解析后得到对应的二进制数组类型消息,无需重新生成协议代码文件,并重新部署工具服务应用,即可对二进制数组类型消息进行序列化及反序列化读写数据。附图说明35.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。36.图1为本发明实施例提供的一种基于protobuf协议动态解析的造数方法的流程示意图;37.图2为本发明实施例提供的另一种基于protobuf协议动态解析的造数方法的流程示意图;38.图3为本发明实施例提供的系统原理图;39.图4为本发明实施例提供的前端页面的输入数据结构示意图;40.图5为本发明实施例提供的一种基于protobuf协议动态解析的造数装置的结构示意图;41.图6为本发明实施例提供的一种计算机设备的内部结构示意图。具体实施方式42.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。43.随着互联网应用的发展,网络应用服务的性能效率以及数据安全要求越来越高,网络应用服务数据交互使用protobuf数据协议的缓存数据的场景越来越多。protobuf(简称pb)协议文件的数据流是以二进制数据流的形式传输,读写数据时,可通过protoc可执行文件在操作系统下对pb协议文件进行不同网络编程语言的解析,生成对应编程语言的协议代码文件,然后对协议代码文件进行序列化和反序列化后方可使用。44.例如,在应用服务开发测试环节中,对于pb协议的缓存数据存取的应用场景,需要可靠且高效的测试造数工具,便于开发测试人员快速进行明文转换不同的pb协议数据的造数,以应对不同测试场景,进而保障应用服务质量。45.但是,现有的应用服务开发测试环节在使用pb协议进行造数时,需要在每次pb协议文件修改后,重新生成协议代码文件上传到缓存造数工具代码中,然后将明文数据转换成新的pb协议数据写入缓存组件,并重新部署工具服务应用才可正常序列化及反序列化读写数据,该造数过程较为复杂,工作效率较低。46.因此,本发明的目的是解决现有技术中应用服务开发测试环节使用pb协议进行造数时的造数过程较为复杂,工作效率较低的技术问题,并提出如下技术方案:47.在一个实施例中,如图1所示,图1为本发明实施例提供的一种基于protobuf协议动态解析的造数方法的流程示意图,本发明提供了一种基于protobuf协议动态解析的造数方法,具体步骤如下:48.s110:接收前端页面发送的模拟请求数据。49.本步骤中,开发测试人员在应用服务开发测试环节,需要运用可靠且高效的测试造数工具,便于开发测试人员快速进行造数,以应对不同测试场景,进而保障应用服务质量。50.比如,在性能测试脚本准备阶段,脚本中的参数一般需要造数才能更好的模拟真实的环境。而有些参数,如身份证号是固定长度的,如果需要造1万个身份证号,则借助测试造数工具来辅助进行造数,以进一步提高测试效率。51.本技术中的测试造数工具主要使用pb协议进行造数,在造数时,首先通过前端页面的输入入口输入相关的造数内容以及预先约定的protobuf协议文件描述内容,以便利用protobuf协议文件描述内容对造数内容进行动态解析。52.可以理解的是,这里的protobuf协议文件描述内容是依据数据生产方和消费方事先约定好的protobuf协议进行编写后得到;例如,protobuf协议文件描述内容中可以定义关键字为商品标签i2i的描述数据更新时间以及描述标签等。53.这里的造数内容为依据protobuf协议文件描述内容编写的json格式的缓存数据字符串,在造数的时候,测试人员只需要模拟json格式的明文数据,测试造数工具则会根据固定的protobuf协议文件描述内容对明文进行转换,转换后的数据可以存储到缓存组件中,从而形成缓存数据。54.比如说,缓存组件为键值对数据库时,在输入造数内容时,可以输入缓存key的值以及缓存组件节点,此时输入的json格式的明文数据则为明文形式的value,通过protobuf协议文件描述内容对明文数据进行转换,并将转换后的数据存储至缓存组件后,此时,缓存组件中存储的value为非明文形式,可通过缓存key来查询对应的value。55.s120:基于protobuf协议文件描述内容对造数内容进行动态解析,得到二进制数组类型消息。56.本步骤中,通过步骤s110接收前端页面发送的模拟请求数据后,可以基于预先约定的protobuf协议文件描述内容对造数内容进行动态解析,从而得到二进制数组类型消息,该二进制数组类型消息可以作为造数后得到的测试数据。57.可以理解的是,protobuf为结构化数据格式标准,提供序列化和反序列方法,用于存储和交换,可通过.proto文件生成对应语言的类代码。而在使用pb协议进行造数时,若每次pb协议文件修改后都需要重新生成协议代码文件,并重新部署工具服务应用才可正常序列化及反序列化读写数据的话,则会导致工作效率较低。58.因而,本技术利用protobuf提供的动态解析机制来对造数内容进行动态解析,该过程可以根据实际业务的多样性而制定的protobuf协议文件,动态调整生成protobuf协议描述文件,接着利用protobuf协议描述文件中的的protobuf协议文件描述内容对明文形式的造数内容进行动态解析,从而将造数内容动态转换成protobuf协议数据,即本技术中的二进制数组类型消息。59.上述实施例中,在应用服务开发测试环节使用pb协议进行造数时,测试人员可在前端页面输入相应的造数内容和预先约定的protobuf协议文件描述内容,后端接收到上述数据后,利用预先约定的protobuf协议文件描述内容对造数内容进行动态解析后得到对应的二进制数组类型消息,无需重新生成协议代码文件,并重新部署工具服务应用,即可对二进制数组类型消息进行序列化及反序列化读写数据。60.上述实施例对本技术中基于protobuf协议动态解析的造数方法进行了展开描述,下面将对本技术中如何对造数内容进行动态解析,得到二进制数组类型消息的过程进行说明。61.在一个实施例中,步骤s120中基于所述protobuf协议文件描述内容对所述造数内容进行动态解析,得到二进制数组类型消息的步骤,可以包括:62.s121:基于所述protobuf协议文件描述内容构造相应的动态消息类。63.s122:基于所述动态消息类对所述对所述造数内容进行动态解析,得到二进制数组类型消息。64.本实施例中,使用protobuf的动态解析机制来处理造数内容时,无需根据proto文件编译生成的类来反序列化消息,而是通过proto文件生成的descriptor来构造动态消息类,然后反序列化(解析)消息。65.因此,本技术在对造数内容进行动态解析之前,可以基于protobuf协议文件描述内容来构造相应的动态消息类,以便通过该动态消息类来对造数内容进行动态解析,以此来获得二进制数组类型消息。66.上述实施例对本技术中如何对造数内容进行动态解析,得到二进制数组类型消息的过程进行说明,下面将对本技术中如何基于protobuf协议文件描述内容构造相应的动态消息类的过程进行解释说明。67.在一个实施例中,步骤s121中基于所述protobuf协议文件描述内容构造相应的动态消息类的步骤,可以包括:68.s210:将所述protobuf协议文件描述内容写入proto文件中,得到描述文件。69.s211:基于所述描述文件生成descriptor文件,所述descriptor文件为二进制文件。70.s212:基于所述descriptor文件构造相应的动态消息类。71.本实施例中,后端依据protobuf协议文件描述内容构造相应的动态消息类之前,可以新建一个临时文件,并保证该临时文件中的输入内容非空,且协议内容格式正确。72.接着将protobuf协议文件描述内容写入.proto格式的文件,即本技术中的proto文件,得到描述文件后,可以根据该描述文件中的描述内容来生成descriptor文件,然后依据descriptor文件来构造相应的动态消息类。73.可以理解的是,本技术在构造动态消息类时,首先将protobuf协议文件描述内容写入.proto格式的文件中,从而获得pbmessage对象,接着利用pbmessage对象获得descriptors.descriptor对象,有了descriptors.descriptor对象后,就可以创建dynamicmessage对象,即本技术中的动态消息类,而有了动态消息类,就可以解析对应的请求。74.进一步地,这里基于描述文件生成descriptor文件时,可以利用protoc可执行文件在服务器中对描述文件执行“protoc‑‑descriptor_set_out=$outputpath”命令来生成descriptor文件。75.本实施例利用protobuf的动态解析机制来处理造数内容,使用proto文件生成的descriptor文件来构造dynamicmessage类,并通过dynamicmessage类来解析测试人员编写的json格式缓存数据,生成相应pb协议的二进制数组数据,以此来提高测试效率。76.上述实施例对本技术中如何基于protobuf协议文件描述内容构造相应的动态消息类的过程进行解释说明,下面将对本技术中的模拟请求数据进行进一步说明。77.在一个实施例中,所述模拟请求数据还可以包括缓存组件节点和缓存key;所述缓存key用于与所述二进制数组类型消息进行配对。78.本实施例中,测试人员在前端页面输入造数内容时,为了将造数后得到的测试数据进行保存,以便测试时使用,测试人员还可以在前端页面中输入缓存组件节点和缓存key,通过缓存组件节点来查找对应的缓存组件,通过缓存key来与二进制数组类型消息进行配对。79.上述实施例对本技术中的模拟请求数据进行进一步说明,下面将依据上述的模拟请求数据来对本技术中基于protobuf协议动态解析的造数方法进行进一步说明。80.在一个实施例中,如图2所示,图2为本发明实施例提供的另一种基于protobuf协议动态解析的造数方法的流程示意图,所述基于protobuf协议动态解析的造数方法,还可以包括:81.s130:基于所述缓存组件节点将所述二进制数组类型消息和所述缓存key写入缓存组件。82.本实施例中,如图2所示,当前端页面输入缓存组件节点和缓存key后,可以基于缓存组件节点将二进制数组类型消息和缓存key写入缓存组件中,当测试人员需要测试数据时,可以通过缓存key来查找对应的二进制数组类型消息,从而提高测试效率。83.可以理解的是,本技术中的缓存组件为缓存中间件,其本质上是一个简洁高速的key‑value存储系统,主要包括策略逻辑层和物理存储层,通过缓存组件查询数据,减少数据库访问次数,以提高动态web应用的速度。84.示意性地,如图3所示,图3为本发明实施例提供的系统原理图,当用户访问浏览器web前端页面时,在前端页面的主应用入口输入pb协议内容,即本技术中的protobuf协议文件描述内容,造数内容、缓存key、缓存组件节点,后端服务模块接收到前端输入的内容后,使用pb协议动态解析来对造数内容进行格式转换,并将格式转换后的数据作为缓存数据存储至缓存组件中。85.上述实施例依据上述的模拟请求数据来对本技术中基于protobuf协议动态解析的造数方法进行进一步说明,下面将对本技术中的redis缓存组件进行说明。86.在一个实施例中,如图4所示,图4为本发明实施例提供的前端页面的输入数据结构示意图;所述缓存组件节点可以包括redis节点,所述缓存组件可以包括redis缓存组件。87.步骤s130中基于所述缓存组件节点将所述二进制数组类型消息和所述缓存key写入缓存组件的步骤,可以包括:88.s131:基于所述redis节点创建与所述redis缓存组件之间的数据连接。89.s132:将所述二进制数组类型消息和所述缓存key写入数据连接后的redis缓存组件中。90.本实施例中,当缓存组件选择redis缓存组件时,对应的缓存组件节点为redis节点,使用缓存组件节点来对二进制数组类型消息进行缓存时,可以先利用redis节点创建与redis缓存组件之间的数据连接,然后再将二进制数组类型消息和缓存key写入数据连接后的redis缓存组件中。91.如图4所示,图4中的数据表名tablename和key组合后是一个缓存key,通过缓存key查询对应的值(value),如key=2时,value=’hello’,value可以为不同类型的值。通过图4中pb输入口输入相应的protobuf协议文件描述内容,造数内容模块输入json格式的明文数据。92.可以理解的是,redis缓存组件是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key‑value数据库,并提供多种语言的api。因此,测试人员可通过输入缓存key,来查找对应的value,即本技术中的二进制数组类型消息。93.上述实施例对本技术中的redis缓存组件进行说明,下面将对本技术中的tair缓存组件进行解释。94.在一个实施例中,所述缓存组件节点可以包括tair节点,所述缓存组件可以包括tair缓存组件。95.步骤s130中基于所述缓存组件节点将所述二进制数组类型消息和所述缓存key写入缓存组件的步骤,可以包括:96.s141:基于所述tair节点创建与所述tair缓存组件之间的数据连接。97.s142:将所述二进制数组类型消息和所述缓存key写入数据连接后的tair缓存组件中。98.本实施例中,当缓存组件选择tair缓存组件时,对应的缓存组件节点为tair节点,使用缓存组件节点来对二进制数组类型消息进行缓存时,可以先利用tair节点创建与tair缓存组件之间的数据连接,然后再将二进制数组类型消息和缓存key写入数据连接后的tair缓存组件中。99.可以理解的是,这里的tair缓存组件也是一种key/value结构数据存储系统,因此,测试人员也可以通过输入缓存key,来查找对应的value,即本技术中的二进制数组类型消息。100.下面对本技术实施例提供的基于protobuf协议动态解析的造数装置进行描述,下文描述的基于protobuf协议动态解析的造数装置与上文描述的基于protobuf协议动态解析的造数方法可相互对应参照。101.在一个实施例中,如图5所示,图5为本发明实施例提供的一种基于protobuf协议动态解析的造数装置的结构示意图;本发明还提供了一种基于protobuf协议动态解析的造数装置,包括数据接收模块210和造数模块220,具体包括如下:102.数据接收模块210,用于接收前端页面发送的模拟请求数据,所述模拟请求数据包括造数内容和预先约定的protobuf协议文件描述内容,所述造数内容为依据所述protobuf协议文件描述内容编写的json格式的缓存数据字符串。103.造数模块220,用于基于所述protobuf协议文件描述内容对所述造数内容进行动态解析,得到二进制数组类型消息,并将所述二进制数组类型消息作为造数后得到的测试数据。104.上述实施例中,在应用服务开发测试环节使用pb协议进行造数时,测试人员可在前端页面输入相应的造数内容和预先约定的protobuf协议文件描述内容,后端接收到上述数据后,利用预先约定的protobuf协议文件描述内容对造数内容进行动态解析后得到对应的二进制数组类型消息,无需重新生成协议代码文件,并重新部署工具服务应用,即可对二进制数组类型消息进行序列化及反序列化读写数据。105.在一个实施例中,所述造数模块220可以包括:106.构造模块,用于基于所述protobuf协议文件描述内容构造相应的动态消息类。107.动态解析模块,用于基于所述动态消息类对所述对所述造数内容进行动态解析,servertm、macosxtm、unixtm、linuxtm、freebsdtm或类似。125.本领域技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。126.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。127.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。128.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
再多了解一些

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

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

相关文献