一种用于RPC服务的Mock方法、装置及计算机可读存储介质与流程

专利2023-11-21  107


一种用于rpc服务的mock方法、装置及计算机可读存储介质
技术领域
1.本发明属于计算机领域,具体涉及一种用于rpc服务的mock方法、装置及计算机可读存储介质。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.在当今多服务协作的时代,大多数系统都不再是孤岛,而是需要相互依赖。同时,由于多系统间天然存在着环境稳定难、数据准备难、并行开发难等问题,也就导致联调测试需要大量的沟通成本和排查成本,而mock服务的诞生,就是为了尝试解决该类问题。
4.目前,很多mock服务仍采用逐个单独开发部署的维护模式,即使他们在处理流程和功能逻辑方面具有很多的相似之处,但是每当有新的mock服务需求时,通常还是得重头开始进行数据库设计和代码编写工作,导致工具就绪周期拉长且不具有普适性和推广价值。
5.因此,如何快速提供mock服务是一个亟待解决的问题。


技术实现要素:

6.针对上述现有技术中存在的问题,提出了一种用于rpc服务的mock方法、装置及计算机可读存储介质,利用这种方法、装置及计算机可读存储介质,能够解决上述问题。
7.本发明提供了以下方案。
8.第一方面,提供一种用于rpc服务的mock方法,包括:接收遵循rpc框架规范的服务配置片段,将所述服务配置片段映射为对应的配置类对象;提取所述配置类对象的服务要素信息,构建独立的类加载器,加载rpc接口类及其依赖;反射分析所述rpc接口类的继承关系和公有方法声明,得到分析梳理结果;利用字节码操作框架,根据分析梳理结果生成rpc接口的实现伪类,将实现伪类的接口方法委托至mock服务端的通用处理模块;将配置类对象和实现伪类添加到rpc框架的上下文环境中,以发布rpc接口的mock服务。
9.在一种实施方式中,服务要素信息包括:服务标识、rpc接口类名称。
10.在一种实施方式中,公有方法声明包括:返回值、调用参数和异常信息。
11.在一种实施方式中,将实现伪类的接口方法委托至mock服务端的通用处理模块,还包括:将接口方法的方法名称和方法入参合并为统一的json数组结构,并委托到通用处理模块。
12.在一种实施方式中,将伪类的接口方法委托至mock服务端的通用处理模块之后,还包括:通过诊断工具,观测在虚拟机中是否已实时生成了rpc接口的实现伪类,和/或是否完成了接口方法的调用委托。
13.在一种实施方式中,发布rpc接口的mock服务之后,方法还包括:当接收到rpc请求时,mock服务端的通用处理模块拦截rpc请求,根据rpc请求的服务标识获取对应的类加载
器,并将类加载器动态注入rpc框架;rpc框架使用类加载器解析rpc请求的调用参数,以定位到对应的伪类实现中的指定接口方法,将指定接口方法的调用委托至通用处理模块;通用处理模块根据rpc请求的调用参数生成rpc应答对象,并发送给rpc框架;rpc框架对rpc应答对象进行协议层面的编码,并发送给客户端。
14.在一种实施方式中,通用处理模块根据rpc请求的调用参数生成rpc应答对象,还包括:通用处理模块提取rpc请求的调用参数特征值,以匹配应答文本模板,根据应答文本模板和指定类加载器生成rpc应答对象。
15.第二方面,提供一种用于rpc服务的mock装置,包括:rpc框架,用于接收遵循rpc框架规范的服务配置片段,将服务配置片段映射为对应的配置类对象;通用处理模块,用于提取配置类对象的服务要素信息,构建独立的类加载器,加载rpc接口类及其依赖;以及,反射分析rpc接口类的继承关系和公有方法声明,得到分析梳理结果;字节码操作框架,用于根据分析梳理结果生成rpc接口的实现伪类,将实现伪类的接口方法委托至mock服务端的通用处理模块;通用处理模块,还用于将配置类对象和实现伪类添加到rpc框架的上下文环境中,以发布rpc接口的mock服务。
16.在一种实施方式中,服务要素信息包括:服务标识、rpc接口类名称。
17.在一种实施方式中,公有方法声明包括:返回值、调用参数和异常信息。
18.在一种实施方式中,字节码操作框架还用于:将接口方法的方法名称和方法入参合并为统一的json数组结构,并委托到通用处理模块。
19.在一种实施方式中,装置还用于:通过诊断工具,观测在虚拟机中是否已实时生成了rpc接口的实现伪类,和/或是否完成了接口方法的调用委托。
20.在一种实施方式中,通用处理模块,还用于:当接收到rpc请求时,mock服务端的通用处理模块拦截rpc请求,根据rpc请求的服务标识获取对应的类加载器,并将类加载器动态注入rpc框架;rpc框架,还用于使用类加载器解析rpc请求的调用参数,以定位到对应的伪类实现中的指定接口方法,将指定接口方法的调用委托至通用处理模块;通用处理模块,还用于根据rpc请求的调用参数生成rpc应答对象,并发送给rpc框架;rpc框架对rpc应答对象进行协议层面的编码,并发送给客户端。
21.在一种实施方式中,通用处理模块还用于:提取rpc请求的调用参数特征值,以匹配应答文本模板,根据应答文本模板和指定类加载器生成rpc应答对象。
22.第三方面,提供一种用于rpc服务的mock装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:第一方面的方法。
23.第四方面,提供一种计算机可读存储介质,计算机可读存储介质存储有程序,当程序被多核处理器执行时,使得多核处理器执行如第一方面的方法。
24.上述实施方式的优点之一,可以快速配置实现rpc接口的mock服务。
25.本发明的其他优点将配合以下的说明和附图进行更详细的解说。
26.应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。
附图说明
27.通过阅读下文的示例性实施方式的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
28.图1为根据本发明一实施方式的用于rpc服务的mock设备的结构示意图;
29.图2为根据本发明一实施方式的用于rpc服务的mock方法的流程示意图;
30.图3为根据本发明一具体实施方式的用于rpc服务的mock方法的流程示意图;
31.图4为根据本发明另一实施方式的用于rpc服务的mock方法的流程示意图;
32.图5为根据本发明一具体实施方式的用于rpc服务的mock方法的流程示意图。
33.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
34.下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
35.在本技术实施方式的描述中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
36.除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
37.术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术实施方式的描述中,除非另有说明,“多个”的含义是两个或两个以上。
38.为清楚阐述本技术实施方式,首先将介绍一些后续实施方式中可能会出现的概念。
39.概念描述:
40.rpc,remote procedure call,远程过程调用,作为一种常见的跨进程通信模式,由于其屏蔽了协议编码和网络通信、调用方便且传输效率高等优点。
41.mock,是指在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为。
42.下面将参考附图并结合实施方式来详细说明本发明。
43.首先参见图1,其示意性示出了其中可以使用根据本公开的示例性实现方式的环境100的示意图。
44.图1示出了根据本公开的实施方式的计算设备100的示例的示意图。需要说明的是,图1即可为用于执行rpc服务的mock方法的硬件运行环境的结构示意图。本发明实施方式的设备可以是pc,便携计算机等终端设备。
45.如图1所示,该用于执行rpc服务的mock设备可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
46.本领域技术人员可以理解,图1中示出的用于执行rpc服务的mock设备结构并不构成对用于执行rpc服务的mock设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
47.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及用于执行rpc服务的mock程序。其中,操作系统是管理和控制xx设备硬件和软件资源的程序,支持用于执行rpc服务的mock程序以及其它软件或程序的运行。
48.在图1所示的用于执行rpc服务的mock设备中,用户接口1003主要用于接收第一终端、第二终端和监管终端发送的请求、数据等;网络接口1004主要用于连接后台服务器与后台服务器进行数据通信;而处理器1001可以用于调用存储器1005中存储的用于执行rpc服务的mock程序,并执行以下操作:
49.接收遵循rpc框架规范的服务配置片段,将服务配置片段映射为对应的配置类对象;提取配置类对象的服务要素信息,构建独立的类加载器,加载rpc接口类及其依赖;反射分析rpc接口类的继承关系和公有方法声明,得到分析梳理结果;利用字节码操作框架,根据分析梳理结果生成rpc接口的实现伪类,将实现伪类的接口方法委托至mock服务端的通用处理模块;将配置类对象和实现伪类添加到rpc框架的上下文环境中,以发布rpc接口的mock服务。
50.由此,能够快速形成rpc接口的mock服务,且灵活性较高。
51.图2示出了根据本公开的实施方式的用于执行rpc服务的mock方法的流程图。该方法例如可以由如图1所示的计算设备100来执行。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
52.步骤210,接收遵循rpc框架规范的服务配置片段,将服务配置片段映射为对应的配置类对象;
53.步骤220,提取配置类对象的服务要素信息,构建独立的类加载器,加载rpc接口类及其依赖;
54.步骤230,反射分析rpc接口类的继承关系和公有方法声明,得到分析梳理结果;
55.步骤240,利用字节码操作框架,根据分析梳理结果生成rpc接口的实现伪类,将实现伪类的接口方法委托至mock服务端的通用处理模块;
56.步骤250,将配置类对象和实现伪类添加到rpc框架的上下文环境中,以发布rpc接口的mock服务。
57.在本技术实施例中,无需再从头开始进行设计和开发mock服务,仅需根据所用rpc框架的使用规范提供部分的配置片段,即可使得一个rpc接口的mock服务在短时间内就绪。
此外,对于rpc接口文件使用独立的自定义类加载器进行动态加载,保证各个服务之间相互隔离不受彼此影响,在需要更新时亦可做到实时替换生效,保证了灵活性。此外,可实时生成伪类实现,仅需提供rpc接口文件,使用人员不用编写任何代码,平台会自动分析接口类的继承结构和全部方法声明,并生成对应的伪类实现用以服务调用处理。集中运维缩减成本:平台化的管理模式可以将原来独立开发部署的各个mock服务收拢进行统一的智能化管理和服务提供,可大幅降低开发和运维成本。
58.参见图3,其以java语言下的实现为例,对本技术的实现方式给出具体的示例。
59.首先,在s301,rpc框架接收到通用处理模块发来的遵循相应rpc框架规范的静态xml服务配置片段后进行解析,该服务配置片段诸如《service name="foo_service"version="1.0"interface="com.unionpay.demo.fooservice"/》;在s302,rpc框架将该服务配置片段转换为可在运行时能够直接识别并使用的服务配置类(serviceconfig)对象,返回通用处理模块。在s303,通用处理模块提取映射后的服务配置类对象中相关字段组成的服务要素信息,构建服务专属独立的类加载器(classloader)去加载rpc接口类,该rpc接口类比如是com.unionpay.demo.fooservice,也即在java平台中一般承载形式为标准格式的jar文件。接着,在s304,通用处理模块反射分析rpc接口的继承关系,梳理声明的所有公有方法,包括返回值、调用参数和显式抛出的异常信息等。而后,在s305,借助字节码操作框架,根据分析梳理结果生成一个默认名称为接口完全限定名+impl固定后缀的实现伪类(伪是相较于真实服务端原本就存在的接口实现类而言),将接口方法实现全部委托至通用处理模块已经预先定义好的函数中进行统一处理,用以模拟rpc调用的真实效果。最后,在s306,将解析好的配置对象和生成的伪类一同添加到rpc框架的上下文环境中;在s307,rpc框架驱动框架完成后续的服务发布流程。至此,便实现了一个rpc接口的mock服务。
60.在一种实施方式中,在步骤240中,将接口方法的方法名称和方法入参合并为统一的json数组结构,并委托到通用处理模块。具体地,在伪类实现中,将接口方法委托给通用处理模块时,除传递服务标识等基本信息外,可以同时将接口方法的方法名称和方法入参合并为了统一的json数组结构。这样做可以实现让用户在前端应答模板配置界面根据数组索引顺序选择特定的参数作为特征值进行应答策略规则匹配,以达到针对每笔不同的请求个性化差异应答。同时,将方法名称作为数组第0号索引值暴露给用户,除了可以作为匹配规则候选项外,还可以据此分类管理应答模板,更加直观和方便。
61.在一种实施方式中,在步骤240之后,通过诊断工具,观测在虚拟机中是否已实时生成了rpc接口的实现伪类,和/或是否完成了接口方法的调用委托。例如,在完成上述操作后,可通过使用java平台相关诊断工具观测到在jvm中已经实时生成了rpc接口的实现伪类com.unionpay.demo.fooserviceimpl,并且完成了方法调用委托。之后执行步骤250,也即,将解析好的配置对象和生成的伪类一同添加到rpc框架的上下文环境中,驱动框架完成后续的服务发布流程。
62.在一种实施方式中,服务要素信息包括:服务标识、rpc接口类名称等。
63.在一种实施方式中,公有方法声明包括:返回值、调用参数和异常信息等。
64.参见图4,其示出了在发布rpc接口的mock服务之后,调用mock服务的流程,包括:
65.步骤410,当接收到rpc请求时,mock服务端的通用处理模块拦截rpc请求,根据rpc请求的服务标识获取对应的类加载器,并将类加载器动态注入rpc框架;
66.步骤420,rpc框架使用类加载器解析rpc请求的调用参数,以定位到对应的伪类实现中的指定接口方法,将指定接口方法的调用委托至通用处理模块;
67.步骤430,通用处理模块根据rpc请求的调用参数生成rpc应答对象,并发送给rpc框架;
68.步骤440,rpc框架对rpc应答对象进行协议层面的编码,并发送给客户端。
69.在一个实施方式中,在步骤430中,通用处理模块提取rpc请求的调用参数特征值,以匹配应答文本模板,根据应答文本模板和指定类加载器生成rpc应答对象。
70.如图5所示,其以java语言下的实现为例,对上述步骤410-440的实现方式给出具体的示例。
71.在s501,用户通过客户端发送rpc请求到达mock服务端;在s502,通用处理模块拦截该rpc请求并根据rpc请求的服务标识获取对应的类加载器。这是因为在服务发布的时候,使用了一个自定义的类加载器去加载接口类及其相关依赖,并且生成的伪类实现也是交由该类加载器进行管理的。因此,为了保证当rpc框架在处理请求时能够顺利的完成字节流到相关参数类型对象的反序列化操作,在通用处理模块进行了拦截并且根据服务标识信息找到特定的类加载器,将其绑定到了目标工作线程之上。在s503,通用处理模块将类加载器动态注入rpc框架;在s504,rpc请求到达rpc框架;在s505,rpc框架使用对应的类加载器解析rpc请求的调用参数,之后便可成功定位到对应的伪类实现中的某一指定接口方法;而因为在前述步骤240中,已经在伪类生成时已经将rpc接口的所有接口方法的调用委托到了通用处理模块,接下来,在s506,将rpc请求的具体方法的调用委托至通用处理模块;在通用处理模块中,所有rpc请求将会被无差别处理,在s507,通用处理模块提取rpc请求的调用参数特征值,以匹配应答文本模板;在s508,通用处理模块根据应答文本模板和指定类加载器生成rpc应答对象;s509,通用处理模块将rpc应答对象发送至rpc框架,此时主动权再次回到了rpc框架,由rpc框架完成协议层面的编码;在s510,rpc框架发送rpc应答至客户端。至此,便完成了一次rpc接口mock服务的调用。
72.需要说明的是,本实施方式中未作详细说明的步骤可以参考图2所示实施方式中相关步骤中的描述,此处不再赘述。
73.在本说明书的描述中,参考术语“一些可能的实施方式”、“一些实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施方式或示例以及不同实施方式或示例的特征进行结合和组合。
74.关于本技术实施方式的方法流程图,将某些操作描述为以一定顺序执行的不同的步骤。这样的流程图属于说明性的而非限制性的。可以将在本文中所描述的某些步骤分组在一起并且在单个操作中执行、可以将某些步骤分割成多个子步骤、并且可以以不同于在本文中所示出的顺序来执行某些步骤。可以由任何电路结构和/或有形机制(例如,由在计算机设备上运行的软件、硬件(例如,处理器或芯片实现的逻辑功能)等、和/或其任何组合)以任何方式来实现在流程图中所示出的各个步骤。
75.基于相同的技术构思,本发明实施方式还提供一种用于rpc服务的mock装置,用于执行上述任一实施方式所提供的rpc服务的mock方法。
76.该装置包括:rpc框架,用于接收遵循rpc框架规范的服务配置片段,将服务配置片段映射为对应的配置类对象;通用处理模块,用于提取配置类对象的服务要素信息,构建独立的类加载器,加载rpc接口类及其依赖;以及,反射分析rpc接口类的继承关系和公有方法声明,得到分析梳理结果;字节码操作框架,用于根据分析梳理结果生成rpc接口的实现伪类,将实现伪类的接口方法委托至mock服务端的通用处理模块;通用处理模块,还用于将配置类对象和实现伪类添加到rpc框架的上下文环境中,以发布rpc接口的mock服务。
77.在一种实施方式中,服务要素信息包括:服务标识、rpc接口类名称。
78.在一种实施方式中,公有方法声明包括:返回值、调用参数和异常信息。
79.在一种实施方式中,字节码操作框架还用于:将接口方法的方法名称和方法入参合并为统一的json数组结构,并委托到通用处理模块。
80.在一种实施方式中,装置还用于:通过诊断工具,观测在虚拟机中是否已实时生成了rpc接口的实现伪类,和/或是否完成了接口方法的调用委托。
81.在一种实施方式中,通用处理模块,还用于:当接收到rpc请求时,mock服务端的通用处理模块拦截rpc请求,根据rpc请求的服务标识获取对应的类加载器,并将类加载器动态注入rpc框架;rpc框架,还用于使用类加载器解析rpc请求的调用参数,以定位到对应的伪类实现中的指定接口方法,将指定接口方法的调用委托至通用处理模块;通用处理模块,还用于根据rpc请求的调用参数生成rpc应答对象,并发送给rpc框架;rpc框架对rpc应答对象进行协议层面的编码,并发送给客户端。
82.在一种实施方式中,通用处理模块还用于:提取rpc请求的调用参数特征值,以匹配应答文本模板,根据应答文本模板和指定类加载器生成rpc应答对象。
83.需要说明的是,本技术实施方式中的装置可以实现前述方法的实施方式的各个过程,并达到相同的效果和功能,这里不再赘述。
84.根据本技术的一些实施方式,提供了rpc服务的mock方法的非易失性计算机存储介质,其上存储有计算机可执行指令,该计算机可执行指令设置为在由处理器运行时执行:上述实施方式所述的方法。
85.本技术中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,对于装置、设备和计算机可读存储介质实施方式而言,由于其基本相似于方法实施方式,所以其描述进行了简化,相关之处可参见方法实施方式的部分说明即可。
86.本技术实施方式提供的装置、设备和计算机可读存储介质与方法是一一对应的,因此,装置、设备和计算机可读存储介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和计算机可读存储介质的有益技术效果。
87.本领域内的技术人员应明白,本发明的实施方式可提供为方法、装置(设备或系统)、或计算机可读存储介质。因此,本发明可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储
器等)上实施的计算机可读存储介质的形式。
88.本发明是参照根据本发明实施方式的方法、装置(设备或系统)、和计算机可读存储介质的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
89.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
90.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
91.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
92.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
93.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
94.虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

技术特征:
1.一种用于rpc服务的mock方法,其特征在于,包括:接收遵循rpc框架规范的服务配置片段,将所述服务配置片段映射为对应的配置类对象;提取所述配置类对象的服务要素信息,构建独立的类加载器,加载rpc接口类及其依赖;反射分析所述rpc接口类的继承关系和公有方法声明,得到分析梳理结果;利用字节码操作框架,根据所述分析梳理结果生成所述rpc接口的实现伪类,将所述实现伪类的接口方法委托至mock服务端的通用处理模块;将所述配置类对象和所述实现伪类添加到rpc框架的上下文环境中,以发布所述rpc接口的mock服务。2.根据权利要求1所述的方法,其特征在于,所述服务要素信息包括:服务标识、rpc接口类名称。3.根据权利要求1所述的方法,其特征在于,所述公有方法声明包括:返回值、调用参数和异常信息。4.根据权利要求1所述的方法,其特征在于,将所述实现伪类的接口方法委托至mock服务端的通用处理模块,还包括:将所述接口方法的方法名称和方法入参合并为统一的json数组结构,并委托到所述通用处理模块。5.根据权利要求1所述的方法,其特征在于,将所述伪类的接口方法委托至mock服务端的通用处理模块之后,还包括:通过诊断工具,观测在虚拟机中是否已实时生成了rpc接口的实现伪类,和/或是否完成了接口方法的调用委托。6.根据权利要求1所述的方法,其特征在于,在发布所述rpc接口的mock服务之后,所述方法还包括:当接收到rpc请求时,所述mock服务端的通用处理模块拦截所述rpc请求,根据所述rpc请求的服务标识获取对应的所述类加载器,并将所述类加载器动态注入所述rpc框架;所述rpc框架使用所述类加载器解析所述rpc请求的调用参数,以定位到对应的所述伪类实现中的指定接口方法,将所述指定接口方法的调用委托至所述通用处理模块;所述通用处理模块根据所述rpc请求的调用参数生成rpc应答对象,并发送给所述rpc框架;所述rpc框架对所述rpc应答对象进行协议层面的编码,并发送给客户端。7.根据权利要求1所述的方法,其特征在于,所述通用处理模块根据所述rpc请求的调用参数生成rpc应答对象,还包括:所述通用处理模块提取所述rpc请求的调用参数特征值,以匹配应答文本模板,根据所述应答文本模板和指定类加载器生成所述rpc应答对象。8.一种用于rpc服务的mock装置,其特征在于,包括:rpc框架,用于接收遵循rpc框架规范的服务配置片段,将所述服务配置片段映射为对应的配置类对象;通用处理模块,用于提取所述配置类对象的服务要素信息,构建独立的类加载器,加载
rpc接口类及其依赖;以及,反射分析所述rpc接口类的继承关系和公有方法声明,得到分析梳理结果;字节码操作框架,用于根据所述分析梳理结果生成所述rpc接口的实现伪类,将所述实现伪类的接口方法委托至mock服务端的所述通用处理模块;所述通用处理模块,还用于将所述配置类对象和所述实现伪类添加到rpc框架的上下文环境中,以发布所述rpc接口的mock服务。9.根据权利要求8所述的装置,其特征在于,所述服务要素信息包括:服务标识、rpc接口类名称。10.根据权利要求8所述的装置,其特征在于,所述公有方法声明包括:返回值、调用参数和异常信息。11.根据权利要求8所述的装置,其特征在于,所述字节码操作框架还用于:将所述接口方法的方法名称和方法入参合并为统一的json数组结构,并委托到所述通用处理模块。12.根据权利要求8所述的装置,其特征在于,所述装置还用于:通过诊断工具,观测在虚拟机中是否已实时生成了rpc接口的实现伪类,和/或是否完成了接口方法的调用委托。13.根据权利要求8所述的装置,其特征在于,所述通用处理模块,还用于:当接收到rpc请求时,所述mock服务端的通用处理模块拦截所述rpc请求,根据所述rpc请求的服务标识获取对应的所述类加载器,并将所述类加载器动态注入所述rpc框架;所述rpc框架,还用于使用所述类加载器解析所述rpc请求的调用参数,以定位到对应的所述伪类实现中的指定接口方法,将所述指定接口方法的调用委托至所述通用处理模块;所述通用处理模块,还用于根据所述rpc请求的调用参数生成rpc应答对象,并发送给所述rpc框架;所述rpc框架对所述rpc应答对象进行协议层面的编码,并发送给客户端。14.根据权利要求13所述的装置,其特征在于,所述通用处理模块还用于:提取所述rpc请求的调用参数特征值,以匹配应答文本模板,根据所述应答文本模板和指定类加载器生成所述rpc应答对象。15.一种用于rpc服务的mock装置,其特征在于,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:权利要求1-7中任意一项所述的方法。16.一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被多核处理器执行时,使得所述多核处理器执行如权利要求1-7中任一项所述的方法。

技术总结
本发明提供了一种用于RPC服务的Mock方法、装置及计算机可读存储介质,该方法包括:接收遵循RPC框架规范的服务配置片段,将所述服务配置片段映射为对应的配置类对象;提取所述配置类对象的服务要素信息,构建独立的类加载器,加载RPC接口类及其依赖;反射分析所述RPC接口类的继承关系和公有方法声明,得到分析梳理结果;利用字节码操作框架,根据所述分析梳理结果生成所述RPC接口的实现伪类,将所述实现伪类的接口方法委托至Mock服务端的通用处理模块;将所述配置类对象和所述实现伪类添加到RPC框架的上下文环境中,以发布所述RPC接口的Mock服务。利用上述方法,能够快速配置高灵活性Mock服务。活性Mock服务。活性Mock服务。


技术研发人员:刘旭生 黄凤 王荣海 欧鹏 翟威 沈涛 陆辉
受保护的技术使用者:中国银联股份有限公司
技术研发日:2022.07.11
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-6536.html

最新回复(0)