CN109976921A - Rpc服务或消息的指定消费方法及装置、可存储介质和终端 - Google Patents
Rpc服务或消息的指定消费方法及装置、可存储介质和终端 Download PDFInfo
- Publication number
- CN109976921A CN109976921A CN201910140634.XA CN201910140634A CN109976921A CN 109976921 A CN109976921 A CN 109976921A CN 201910140634 A CN201910140634 A CN 201910140634A CN 109976921 A CN109976921 A CN 109976921A
- Authority
- CN
- China
- Prior art keywords
- service
- route code
- message
- service framework
- kafka
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明提供一种RPC服务或消息的指定消费方法及装置、可存储介质和终端,方法包括通过预设方式向代理单元发送测试请求;代理单元对接收到的测试请求进行解析得到路由码,并根据路由码在路由配置中心配置对应的组合链路;通过预设应用性能管理方式将路由码在组合链路对应的服务中传递,其中路由码在组合链路对应的服务中传递是按照组合链路中的服务排列关系进行的,以实现RPC服务的指定消费或消息队列的指定消费。本发明通过提出了基于预设应用性能管理在对业务代码无侵入、完全透明的情况下,结合路由码,实现RPC服务和消息队列的指定消费功能,实现了服务调用按照指定的调用链路执行,极大的提高了测试效率和测试的方便性。
Description
技术领域
本发明服务功能测试技术领域,具体涉及一种RPC服务或消息的指定消费方法及装置、可存储介质和终端。
背景技术
随着公司业务的发展和增长,一个完整的业务流程涉及到很多服务,各个服务可能同时又因为版本迭代或者其他需求部署了多套环境,导致同一服务存在多个版本,而各个服务之间可能通过RPC服务或者消息队列存在关联,使整个业务流程的服务调用呈现为树状结构,每一个分支是一种可能的调用链路。因此在测试过程中,测试人员若想要按照特定的调用链路进行功能测试就会变得错综复杂,难以实现。
在进行某个服务的功能测试时,很多情况下需要调用指定生产者的RPC服务或者消息被指定消费者消费。即对于RPC服务调用来说,消费者服务调用提供者往往会随机调用一个提供者服务;对于消息队列来说,消息会被随机的消费者消费,从而达不到调用指定环境的某个服务或者消息被指定服务的消费者消费的目的,为测试带来很大不便,导致工作效率低。
综上所述,当前业务流程的测试过程存在如下问题:首先,服务调用链路无法指定。即服务与服务之间调用链路复杂,无法指定具体的服务调用链路,服务与服务之间随机调用,达不到测试目的。其次,RPC消费者无法指定消费特定的提供者。即每个服务存在多个版本,导致RPC服务提供者会存在多个,当PRC消费者调用提供者时,会随机调用一个提供者的服务,无法实现服务的指定消费功能。再者,队列消息无法被指定的消费者消费。即生产者生产的消息,会被随机的消费者消费,特定消息被指定的消费者消费无法实现。最后,完整的服务调用链路无法可视化。即对于用户,服务的调用过程完全透明,无法直观的查看服务调用过程,即服务调用的具体节点信息等。
发明内容
鉴于以上所述现有技术的缺点,本发明所要解决的技术问题是现有的业务流程的测试过程无法实现服务调用链路无法指定、RPC消费者无法指定消费特定的提供者以及队列消息无法被指定的消费者消费。
为实现上述目的及其他相关目的,本发明提供一种RPC服务或消息的指定消费方法及装置、可存储介质和终端。
为了解决上述技术问题,本发明提供了一种RPC服务或消息的指定消费方法,包括:
通过预设方式向代理单元发送测试请求;
所述代理单元对接收到的所述测试请求进行解析得到路由码,并根据所述路由码在路由配置中心配置对应的组合链路;
通过预设应用性能管理方式将所述路由码在所述组合链路对应的服务中传递,其中所述路由码在所述组合链路对应的服务中传递是按照所述组合链路中的服务排列关系进行的,以实现RPC服务的指定消费或消息队列的指定消费。
优选地,通过预设方式向代理单元发送测试请求步骤之前还包括:
构建路由配置中心,以实现根据路由码和预设要求对所述组合链路进行配置;
在所述组合链路对应的服务上安装预设应用性能管理工具,以实现所述路由码通过预设应用性能管理方式在所述组合链路对应的各个服务中的传递。
优选地,所述预设应用性能管理工具包括SkyWalking Agent、线程局部变量发送器以及插件开发单元。
优选地,通过预设应用性能管理方式将所述路由码在所述组合链路对应的服务中传递步骤包括:
通过预设应用性能管理方式对http请求和所述组合链路对应的各个服务的服务框架进行调用,以将所述路由码根据所述组合链路传递到所述组合链路对应的各个服务中;
其中,所述服务框架包括SpringMVC服务框架以及Dubbo服务框架、RabbitMQ服务框架和Kafka服务框架中的至少一种。
优选地,通过预设应用性能管理方式调用Http请求过程包括:
利用所述预设应用性能管理方式开发Http拦截器,通过Http拦截器对Http请求进行拦截增强;
从所述Http请求的线程局部变量发送器中取出所述路由码,并将所述路由码放入所述Http请求的标头中,以便于后续服务对所述路由码的调用。
优选地,通过预设应用性能管理方式调用SpringMVC服务框架过程包括:
利用预设应用性能管理器开发SpringMVC拦截器,通过所述SpringMVC拦截器对所述SpringMVC服务框架中的前置控制器类型进行拦截增强;
获取所述Http请求的标头中的所述路由码,并将其放入所述SpringMVC服务框架的所述线程局部变量发送器中,以便于后续服务对所述路由码的调用。
优选地,通过预设应用性能管理方式调用RabbitMQ服务框架的过程包括:
利用预设应用性能管理器开发RabbitMQ拦截器;
当RabbitMQ服务框架作为提供者时,通过所述RabbitMQ拦截器对所述RabbitMQ服务框架的生产类进行拦截增强,将所述RabbitMQ服务框架的线程局部变量发送器中的路由码放入所述消息的属性中,以实现所述路由码的向下传递;或
当RabbitMQ服务框架作为消费者时,通过所述RabbitMQ拦截器对所述RabbitMQ服务框架的消费方式进行拦截增强,并根据所述RabbitMQ服务框架的消费权限来挑选所述RabbitMQ服务框架可消费的消息,并对挑选出的所述消息进行消费。
优选地,通过预设应用性能管理方式调用Dubbo服务框架的过程包括:
利用预设应用性能管理器开发Dubbo拦截器,通过所述Dubbo拦截器对Dubbo服务框架的调用入口方法进行拦截;
根据所述Dubbo服务框架的所述线程局部变量发送器中的所述路由码和所述组合链路获取所述Dubbo服务框架作为消费者时可消费的服务提供者列表,并根据预设过滤方式对所述服务提供者列表中的服务提供者进行过滤,得到符合配置的服务提供者,将所述符合配置的服务提供者发送给所述消费者,从而实现Dubbo服务框架的指定消费功能。
优选地,通过预设应用性能管理方式调用Kafka服务框架的过程包括:
利用预设应用性能管理器开发Kafka拦截器;
当所述Kafka服务框架作为提供者时,通过所述Kafka拦截器对所述Kafka服务框架的消息发送类进行拦截增强,并判断所述Kafka服务框架的版本是否低于0.11,若是则从所述Kafka服务框架的所述线程局部变量发送器中取出所述路由码,并将所述路由码通过预设格式存入消息的载荷中;否则从所述Kafka服务框架的所述线程局部变量发送器中取出所述路由码,并将所述路由码存入所述消息的标头中;或
当所述Kafka服务框架作为消费者时,将所述Kafka服务框架的组标识改成互不相同的值,之后通过所述Kafka拦截器对所述Kafka服务框架的消费方法进行拦截增强,并判断所述Kafka服务框架的版本是否低于0.11,若所述Kafka服务框架的版本低于0.11,则对所述消息的载荷进行解析得到所述路由码,同时根据所述组合链路判断所述Kafka服务框架是否有权限消费当前得到的消息,如果有权限则消费当前得到的消息,如果没有权限则跳过当前得到的消息;若所述Kafka服务框架的版本不低于0.11,则将所述路由码从所述消息的标头中取出,再根据所述组合链路判断当前消费者是否有权限消费当前得到的消息,如果有权限则消费当前得到的消息,如果没有权限则跳过当前得到的消息。
优选地,所述预设方式包括触发界面和接口工具;所述路由码为服务IP或服务标识。
为了解决上述技术问题,本发明还提供了一种RPC服务或消息的指定消费装置,包括:依次连接的测试请求发送单元、代理单元和路由码传递单元;
所述测试请求发送单元,用于通过预设方式向代理单元发送测试请求;
所述代理单元,用于对接收到的所述测试请求进行解析得到路由码,并根据所述路由码在路由配置中心配置对应的组合链路;
所述路由码传递单元,用于通过预设应用性能管理方式将所述路由码在所述组合链路对应的服务中传递,其中所述路由码在所述组合链路对应的服务中传递是按照所述组合链路中的服务排列关系进行的,以实现RPC服务的指定消费或消息队列的指定消费。
为了解决上述技术问题,本发明还提供了一种可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现所述RPC服务或消息的指定消费方法。
为了解决上述技术问题,本发明还提供了一种终端,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行所述RPC服务或消息的指定消费方法。
与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:
应用本发明实施例提供的RPC服务或消息的指定消费方法,通过基于预设应用性能管理方法技术对业务代码无侵入、完全透明的情况下,结合路由码,实现RPC服务、Kafka服务框架、RabbitMQ服务框架等消息队列的指定消费功能,实现了服务调用按照指定的调用链路执行,极大的提高了测试效率和测试的方便性。实现该技术方案之后,测试人员或者开发人员只需要进行简单的配置即可实现RPC服务、RabbitMQ和Kafka等消息队列的指定消费功能,满足了测试需求的同时极大的提高了相关工作人员的工作效率,该技术方案简单高效,针对开发人员和测试人员完全透明且对业务代码无侵入,不会影响生产环境服务和消息的随机消费。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1示出了本发明实施例一RPC服务或消息的指定消费方法的步骤示意图;
图2示出了本发明实施例一RPC服务或消息的指定消费方法的一种服务调用路由码传递时序图;
图3示出了本发明实施例一RPC服务或消息的指定消费方法的一种服务调用事例图;
图4示出了本发明实施例二RPC服务或消息的指定消费装置的结构示意图;
图5示出了本发明实施例四终端的模块示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
现有公司的业务流程通常涉及多个服务,各个服务可能同时因为版本迭代或者其他需求部署了多套环境,导致同一服务存在多个版本,从而在测试过程中,测试人员若想要按照特定的调用链路进行功能测试就会变得错综复杂,难以实现。具体在进行某个服务的功能测试时,很多情况下是需要调用指定生产者的RPC服务或者消息被指定消费者消费的,但现有业务流程的测试过程仍存在服务调用链路无法指定、RPC消费者无法指定消费特定的提供者以及队列消息无法被指定的消费者消费等的问题。
实施例一
为解决现有技术中上述问题,本发明实施例提供了一种RPC服务或消息的指定消费方法。
图1示出了本发明实施例RPC服务或消息的指定消费方法的步骤示意图;参考图1,本发明实施例RPC服务或消息的指定消费方法包括如下步骤。
步骤S101,构建路由配置中心,以实现根据路由码和预设要求对组合链路进行配置。
具体地,对路由配置中心进行构建,使得构建的路由配置中心可根据解析得到的路由码和人为设置的预设要求来对实现指定消费的链路进行配置,构成组合链路。即对解析得到的路由码进行路由成员的配置,路由成员(即服务)为路由码指定的消费者,以便于后续将路由码根据组合链路中的路由成员顺序传递下去,进一步实现RPC服务或消息队列的指定消费。
步骤S102,在组合链路对应的服务上安装预设应用性能管理工具,以实现路由码通过预设应用性能管理方式在组合链路对应的各个服务中传递。
具体地,对预设应用性能管理工具进行构建,并在组合链路对应的各个服务上对预设应用性能管理工具进行安装,使得在对服务的功能测试过程中路由码可通过预设性能管理方式将路由码传递到各个服务中。进一步地,预设应用性能管理工具是由Skywalking改造得来的,具体仅保留Skywalking中的SkyWalking Agent,结合线程局部变量发送器(TransmittableThreadLocal)和插件开发单元形成与预设应用性能管理工具Snowwalking。其中线程局部变量发送器(TransmittableThreadLocal)可使路由码在跨线程的情况下依然可以进行传递。插件开发单元可开发各种服务框架的拦截器,以实现路由码传递过程中的各种拦截作用。在进行服务的功能测试之前,还需预设应用性能管理工具利用开发单元开发对应的服务框架拦截插件,并将开发的服务框架拦截插件对应安装在组合链路的各个服务上。
更进一步地,如果应用为jar包格式,则在jar启动命令前添加javaagent命令,加入Snowwalking和线程局部变量发送器(TransmittableThreadLocal)等相关jar包。如果应用为war包格式,则需要在相关容器(Tomcat、Jboss等)启动脚本中,添加javaagent启动命令,引入Snowwalking和线程局部变量发送器(TransmittableThreadLocal)等相关iar包。
需要说明的是,通过snowwalking对服务链路的各种调用方式进行拦截增强,达到路由码、根据组合链路信息向下传递和指定消费的功能,对业务代码零侵入且完全透明。
步骤S103,通过预设方式向代理单元发送测试请求。
具体地,准备工作完成之后,就可对服务的功能进行测试了。首先通过预设方式向代理单元发送测试请求。优选地,预设方式包括触发界面和接口工具,触发界面优选为前端H5页面。当通过触发界面向代理单元发送测试请求时,路由码为服务IP。当通过服务标识向代理单元发送测试请求时,路由码为服务标识。
步骤S104,代理单元对接收到的测试请求进行解析得到路由码,并根据路由码在路由配置中心配置对应的组合链路。
具体地,代理单元对接收到的测试请求进行解析得到路由码,并将路由码发送到路由配置中心,测试人员或者开发人员结合路由码根预设需求对组合链路进行配置,需要说明的是,预设要求是测试人员或者开发人员结合测试需求进行设置的。
步骤S105,通过预设应用性能管理方式将路由码在组合链路对应的服务中传递,其中路由码在组合链路对应的服务中传递是按照组合链路中的服务排列顺序进行的,以实现RPC服务的指定消费或消息队列的指定消费。
具体地,通过预设应用性能管理方式将路由码在组合链路对应的服务中传递步骤包括:
通过预设应用性能管理方式对http请求和组合链路对应的各个服务的服务框架进行调用,以将路由码根据组合链路传递到组合链路对应的各个服务中;其中,服务框架包括SpringMVC服务框架,以及Dubbo服务框架、RabbitMQ服务框架和Kafka服务框架中的至少一种。
为了进一步地对本发明通过预设应用性能管理方式对http请求和组合链路对应的各个服务的服务框架进行调用过程,以下分别对http请求和存在的服务的服务框架类型的调用过程进行详细的说明。
通过预设应用性能管理方式调用Http请求过程包括:
利用预设应用性能管理方式开发Http拦截器,通过Http拦截器对Http请求进行拦截增强;从Http请求的线程局部变量发送器(TransmittableThreadLocal)中取出路由码,并将路由码放入Http请求的标头中,以便于后续服务对路由码的调用。
通过预设应用性能管理方式调用SpringMVC服务框架过程包括:
利用预设应用性能管理器开发SpringMVC拦截器,通过SpringMVC拦截器对SpringMVC服务框架中的前置控制器类型进行拦截增强;获取Http请求的标头中的路由码,并将其放入SpringMVC服务框架的线程局部变量发送器(TransmittableThreadLocal)中,以便于后续服务对路由码的调用。
通过预设应用性能管理方式调用RabbitMQ服务框架的过程包括:
利用预设应用性能管理器开发RabbitMQ拦截器,在RabbitMQ服务框架分别作为提供者和消费者时分别做拦截增强。
具体地,当RabbitMQ服务框架作为提供者时,通过RabbitMQ拦截器对RabbitMQ服务框架的生产类进行拦截增强,将RabbitMQ服务框架的线程局部变量发送器(TransmittableThreadLocal)中的路由码放入消息的属性中,以实现路由码的向下传递。当RabbitMQ服务框架作为消费者时,通过RabbitMQ拦截器对RabbitMQ服务框架的消费方式进行拦截增强,并根据RabbitMQ服务框架的消费权限来挑选RabbitMQ服务框架可消费的消息;更能进一步地,当消费者随机拉取一条消息时,将消息的属性中的路由码取出,根据在路由配置中心配置的组合链路判断当前消费者是否有消费权限,如果有消费权限,则当前消费者可继续消费该消息,否则,该消费者无法消费该消息,并将该消息重新入队到消息队列,再重新从消息队列拉取其他消息进行消费。
通过预设应用性能管理方式调用Dubbo服务框架的过程包括:
利用预设应用性能管理器开发Dubbo拦截器,通过Dubbo拦截器对Dubbo服务框架的调用入口方法进行拦截;根据Dubbo服务框架的线程局部变量发送器(TransmittableThreadLocal)中的路由码和组合链路获取Dubbo服务框架作为消费者时可消费的服务提供者列表,并根据预设过滤方式对服务提供者列表中的服务提供者进行过滤,得到符合配置的服务提供者,将符合配置的服务提供者发送给消费者,从而实现Dubbo服务框架的指定消费功能。
通过预设应用性能管理方式调用Kafka服务框架的过程包括:
利用预设应用性能管理器开发Kafka拦截器,在Kafka服务框架分别作为提供者和消费者时分别做拦截增强。
具体地,当Kafka服务框架作为提供者时,通过Kafka拦截器对Kafka服务框架的消息发送类进行拦截增强,并判断Kafka服务框架的版本是否低于0.11,若是则从Kafka服务框架的线程局部变量发送器(TransmittableThreadLocal)中取出路由码,并将路由码通过预设格式存入消息的载荷中;否则从Kafka服务框架的线程局部变量发送器(TransmittableThreadLocal)中取出路由码,并将路由码存入消息的标头中。
当Kafka服务框架作为消费者时,将Kafka服务框架的组标识(group.id)改成互不相同的值,之后通过Kafka拦截器对Kafka服务框架的消费方法进行拦截增强,并判断Kafka服务框架的版本是否低于0.11,若Kafka服务框架的版本低于0.11,则对消息的载荷进行解析得到路由码,同时根据组合链路判断Kafka服务框架是否有权限消费当前得到的消息,如果有权限则消费当前得到的消息,如果没有权限则跳过当前得到的消息;若Kafka服务框架的版本不低于0.11,则将路由码从消息的标头中取出,再根据组合链路判断当前消费者是否有权限消费当前得到的消息,如果有权限则消费当前得到的消息,如果没有权限则跳过当前得到的消息。
需要说明的是,如果存在服务其他调用方式,同样可以对其进行增强拦截,实现路由码和调用链路的向下传递等,而保证服务调用链路不间断。通过以上对各种调用链路做拦截增强,即可将路由码结合应用性能管理、线程局部变量发送器TransmittableThreadLocal和插件开发技术在各种业务场景下进行传递,根据路由配置等元数据实现携带指定路由码服务或者消息的指定消费功能。
为了进一步说明本发明实施例RPC服务或消息的指定消费方法中服务调用路由码传递过程,图2示出了本发明实施例RPC服务或消息的指定消费方法的一种服务调用路由码传递时序图;图2所示过程为前端H5页面向代理单元发送测试请求,代理单元从测试请求中解析出路由码,并通过Snowwalking将路由码传递给服务框架为SpringMVC的服务,具有SpringMV服务框架的服务通过Snowwalking将路由码传递给服务框架为Dubbo的服务,具有Dubbo服务框架的服务通过Snowwalking将路由码传递给服务框架为RabbitMQ的服务,具有RabbitMQ服务框架的服务通过Snowwalking将路由码传递给服务框架为Kafka的服务,在服务的功能测试过程中,测试信息随路由码传递到服务框架为Kafka的服务中后,以实现RPC服务或消息队列的指定消费,之后直接测试结果信息从服务框架为Kafka的服务中跳转到服务框架为Dubbo的服务,再从服务框架为Dubbo的服务中跳转到服务框架为SpringMVC的服务中,再通过服务框架为SpringMVC的服务传递到前端H5页面进行显示。
同时图3示出了本发明实施例RPC服务或消息的指定消费方法的一种服务调用事例图。参考图3可知,假设路由配置中心配置路由码code1对应的路由链路为B1,C2,D3,则前端H5页面向代理单元发送测试请求,代理单元从测试请求中解析出路由码code1,并将code1发送给服务框架为SpringMVC的服务,服务框架为SpringMVC的服务将路由码传递给服务B中的服务B1,而后服务B1将路由码code1传递给服务C中的服务C2,服务C2将路由码code1传递给服务D中的服务D3,完成RPC服务或消息队列的指定消费。
需要说明的是,利用本发明实施例方法,在服务的调用过程中还可同时实现RPC服务的指定消费和消息的指定消费。
应用本发明实施例提供的RPC服务或消息的指定消费方法,通过基于预设应用性能管理方法技术对业务代码无侵入、完全透明的情况下,结合路由码,实现RPC服务、Kafka服务框架、RabbitMQ服务框架等消息队列的指定消费功能,实现了服务调用按照指定的调用链路执行,极大的提高了测试效率和测试的方便性。实现该技术方案之后,测试人员或者开发人员只需要进行简单的配置即可实现RPC服务、RabbitMQ和Kafka等消息队列的指定消费功能,满足了测试需求的同时极大的提高了相关工作人员的工作效率,该技术方案简单高效,针对开发人员和测试人员完全透明且对业务代码无侵入,不会影响生产环境服务和消息的随机消费。
实施例二
为解决现有技术中存在的上述技术问题,本发明实施例还提供了一种RPC服务或消息的指定消费装置。
图4示出了本发明实施例二RPC服务或消息的指定消费装置的结构示意图;参考图4,本发明实施例RPC服务或消息的指定消费装置包括依次连接的测试请求发送单元,代理单元和路由码传递单元。
测试请求发送单元用于通过预设方式向代理单元发送测试请求;
代理单元用于对接收到的测试请求进行解析得到路由码,并根据路由码在路由配置中心配置对应的组合链路;
路由码传递单元用于通过预设应用性能管理方式将路由码在组合链路对应的服务中传递,其中路由码在组合链路对应的服务中传递是按照组合链路中的服务排列关系进行的,以实现RPC服务的指定消费或消息队列的指定消费。
应用本发明实施例提供的RPC服务或消息的指定消费装置,通过基于预设应用性能管理方法技术对业务代码无侵入、完全透明的情况下,结合路由码,实现RPC服务、Kafka服务框架、RabbitMQ服务框架等消息队列的指定消费功能,实现了服务调用按照指定的调用链路执行,极大的提高了测试效率和测试的方便性。实现该技术方案之后,测试人员或者开发人员只需要进行简单的配置即可实现RPC服务、RabbitMQ和Kafka等消息队列的指定消费功能,满足了测试需求的同时极大的提高了相关工作人员的工作效率,该技术方案简单高效,针对开发人员和测试人员完全透明且对业务代码无侵入,不会影响生产环境服务和消息的随机消费。
实施例三
为解决现有技术中存在的上述技术问题,本发明实施例还提供了一种可读存储介质,其存储有计算机程序,该计算机程序被处理器执行时可实现实施例一中RPC服务或消息的指定消费方法中的所有步骤。
RPC服务或消息的指定消费方法的具体步骤以及应用本发明实施例提供的计算机可读存储介质获取的有益效果均与实施例一相同,在此不在对其进行赘述。
需要说明的是:存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
实施例四
为解决现有技术中存在的上述技术问题,本发明实施例还提供了一种终端,
图5示出了本发明实施例五终端的模块示意图,参照图5,本实施例终端包括相互连接的处理器及存储器;存储器用于存储计算机程序,处理器用于执行存储器存储的计算机程序,以使终端执行时可实现实施例一中RPC服务或消息的指定消费方法中的所有步骤。
RPC服务或消息的指定消费方法的具体步骤以及应用本发明实施例提供的计算机可读存储介质获取的有益效果均与实施例一相同,在此不在对其进行赘述。
需要说明的是,存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。同理处理器也可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (13)
1.一种RPC服务或消息的指定消费方法,包括:
通过预设方式向代理单元发送测试请求;
所述代理单元对接收到的所述测试请求进行解析得到路由码,并根据所述路由码在路由配置中心配置对应的组合链路;
通过预设应用性能管理方式将所述路由码在所述组合链路对应的服务中传递,其中所述路由码在所述组合链路对应的服务中传递是按照所述组合链路中的服务排列关系进行的,以实现RPC服务的指定消费或消息队列的指定消费。
2.根据权利要求1所述的方法,其特征在于,通过预设方式向代理单元发送测试请求步骤之前还包括:
构建路由配置中心,以实现根据路由码和预设要求对所述组合链路进行配置;
在所述组合链路对应的服务上安装预设应用性能管理工具,以实现所述路由码通过预设应用性能管理方式在所述组合链路对应的各个服务中的传递。
3.根据权利要求2所述的方法,其特征在于,所述预设应用性能管理工具包括SkyWalking Agent、线程局部变量发送器以及插件开发单元。
4.根据权利要求1所述的方法,其特征在于,通过预设应用性能管理方式将所述路由码在所述组合链路对应的服务中传递步骤包括:
通过预设应用性能管理方式对http请求和所述组合链路对应的各个服务的服务框架进行调用,以将所述路由码根据所述组合链路传递到所述组合链路对应的各个服务中;
其中,所述服务框架包括SpringMVC服务框架以及Dubbo服务框架、RabbitMQ服务框架和Kafka服务框架中的至少一种。
5.根据权利要求4所述的方法,其特征在于,通过预设应用性能管理方式调用Http请求过程包括:
利用所述预设应用性能管理方式开发Http拦截器,通过Http拦截器对Http请求进行拦截增强;
从所述Http请求的线程局部变量发送器中取出所述路由码,并将所述路由码放入所述Http请求的标头中,以便于后续服务对所述路由码的调用。
6.根据权利要求5所述的方法,其特征在于,通过预设应用性能管理方式调用SpringMVC服务框架过程包括:
利用预设应用性能管理器开发SpringMVC拦截器,通过所述SpringMVC拦截器对所述SpringMVC服务框架中的前置控制器类型进行拦截增强;
获取所述Http请求的标头中的所述路由码,并将其放入所述SpringMVC服务框架的所述线程局部变量发送器中,以便于后续服务对所述路由码的调用。
7.根据权利要求4所述的方法,其特征在于,通过预设应用性能管理方式调用RabbitMQ服务框架的过程包括:
利用预设应用性能管理器开发RabbitMQ拦截器;
当RabbitMQ服务框架作为提供者时,通过所述RabbitMQ拦截器对所述RabbitMQ服务框架的生产类进行拦截增强,将所述RabbitMQ服务框架的线程局部变量发送器中的路由码放入所述消息的属性中,以实现所述路由码的向下传递;或
当RabbitMQ服务框架作为消费者时,通过所述RabbitMQ拦截器对所述RabbitMQ服务框架的消费方式进行拦截增强,并根据所述RabbitMQ服务框架的消费权限来挑选所述RabbitMQ服务框架可消费的消息,并对挑选出的所述消息进行消费。
8.根据权利要求4所述的方法,其特征在于,通过预设应用性能管理方式调用Dubbo服务框架的过程包括:
利用预设应用性能管理器开发Dubbo拦截器,通过所述Dubbo拦截器对Dubbo服务框架的调用入口方法进行拦截;
根据所述Dubbo服务框架的所述线程局部变量发送器中的所述路由码和所述组合链路获取所述Dubbo服务框架作为消费者时可消费的服务提供者列表,并根据预设过滤方式对所述服务提供者列表中的服务提供者进行过滤,得到符合配置的服务提供者,将所述符合配置的服务提供者发送给所述消费者,从而实现Dubbo服务框架的指定消费功能。
9.根据权利要求4所述的方法,其特征在于,通过预设应用性能管理方式调用Kafka服务框架的过程包括:
利用预设应用性能管理器开发Kafka拦截器;
当所述Kafka服务框架作为提供者时,通过所述Kafka拦截器对所述Kafka服务框架的消息发送类进行拦截增强,并判断所述Kafka服务框架的版本是否低于0.11,若是则从所述Kafka服务框架的所述线程局部变量发送器中取出所述路由码,并将所述路由码通过预设格式存入消息的载荷中;否则从所述Kafka服务框架的所述线程局部变量发送器中取出所述路由码,并将所述路由码存入所述消息的标头中;或
当所述Kafka服务框架作为消费者时,将所述Kafka服务框架的组标识改成互不相同的值,之后通过所述Kafka拦截器对所述Kafka服务框架的消费方法进行拦截增强,并判断所述Kafka服务框架的版本是否低于0.11,若所述Kafka服务框架的版本低于0.11,则对所述消息的载荷进行解析得到所述路由码,同时根据所述组合链路判断所述Kafka服务框架是否有权限消费当前得到的消息,如果有权限则消费当前得到的消息,如果没有权限则跳过当前得到的消息;若所述Kafka服务框架的版本不低于0.11,则将所述路由码从所述消息的标头中取出,再根据所述组合链路判断当前消费者是否有权限消费当前得到的消息,如果有权限则消费当前得到的消息,如果没有权限则跳过当前得到的消息。
10.根据权利要求1所述的方法,其特征在于,所述预设方式包括触发界面和接口工具;所述路由码为服务IP或服务标识。
11.一种RPC服务或消息的指定消费装置,其特征在于,包括:依次连接的测试请求发送单元、代理单元和路由码传递单元;
所述测试请求发送单元,用于通过预设方式向代理单元发送测试请求;
所述代理单元,用于对接收到的所述测试请求进行解析得到路由码,并根据所述路由码在路由配置中心配置对应的组合链路;
所述路由码传递单元,用于通过预设应用性能管理方式将所述路由码在所述组合链路对应的服务中传递,其中所述路由码在所述组合链路对应的服务中传递是按照所述组合链路中的服务排列关系进行的,以实现RPC服务的指定消费或消息队列的指定消费。
12.一种可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至10中任一项所述RPC服务或消息的指定消费方法。
13.一种终端,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行如权利要求1至10中任一项所述RPC服务或消息的指定消费方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910140634.XA CN109976921A (zh) | 2019-02-25 | 2019-02-25 | Rpc服务或消息的指定消费方法及装置、可存储介质和终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910140634.XA CN109976921A (zh) | 2019-02-25 | 2019-02-25 | Rpc服务或消息的指定消费方法及装置、可存储介质和终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109976921A true CN109976921A (zh) | 2019-07-05 |
Family
ID=67077309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910140634.XA Pending CN109976921A (zh) | 2019-02-25 | 2019-02-25 | Rpc服务或消息的指定消费方法及装置、可存储介质和终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109976921A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995780A (zh) * | 2019-10-30 | 2020-04-10 | 北京文渊佳科技有限公司 | Api调用方法、装置、存储介质及电子设备 |
CN113315839A (zh) * | 2021-05-28 | 2021-08-27 | 武汉悦学帮网络技术有限公司 | 消息处理方法、系统、装置、计算机设备及存储介质 |
CN113794705A (zh) * | 2021-09-02 | 2021-12-14 | 百融至信(北京)征信有限公司 | 基于TTL的多header链路灰度发布方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160117201A1 (en) * | 2014-10-28 | 2016-04-28 | International Business Machines Corporation | Linking a function with dual entry points |
CN106502874A (zh) * | 2016-10-26 | 2017-03-15 | 南京途牛科技有限公司 | 一种调用链跟踪方法 |
CN106936659A (zh) * | 2015-12-30 | 2017-07-07 | 华为技术有限公司 | 一种公有云的拨测方法和装置 |
CN109165168A (zh) * | 2018-09-14 | 2019-01-08 | 杭州云创共享网络科技有限公司 | 一种压力测试方法、装置、设备及介质 |
-
2019
- 2019-02-25 CN CN201910140634.XA patent/CN109976921A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160117201A1 (en) * | 2014-10-28 | 2016-04-28 | International Business Machines Corporation | Linking a function with dual entry points |
CN106936659A (zh) * | 2015-12-30 | 2017-07-07 | 华为技术有限公司 | 一种公有云的拨测方法和装置 |
CN106502874A (zh) * | 2016-10-26 | 2017-03-15 | 南京途牛科技有限公司 | 一种调用链跟踪方法 |
CN109165168A (zh) * | 2018-09-14 | 2019-01-08 | 杭州云创共享网络科技有限公司 | 一种压力测试方法、装置、设备及介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995780A (zh) * | 2019-10-30 | 2020-04-10 | 北京文渊佳科技有限公司 | Api调用方法、装置、存储介质及电子设备 |
CN113315839A (zh) * | 2021-05-28 | 2021-08-27 | 武汉悦学帮网络技术有限公司 | 消息处理方法、系统、装置、计算机设备及存储介质 |
CN113315839B (zh) * | 2021-05-28 | 2023-05-02 | 武汉悦学帮网络技术有限公司 | 消息处理方法、系统、装置、计算机设备及存储介质 |
CN113794705A (zh) * | 2021-09-02 | 2021-12-14 | 百融至信(北京)征信有限公司 | 基于TTL的多header链路灰度发布方法及系统 |
CN113794705B (zh) * | 2021-09-02 | 2023-08-04 | 百融至信(北京)科技有限公司 | 基于TTL的多header链路灰度发布方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8219970B2 (en) | XML push and remote execution of a wireless applications | |
CN105389191B (zh) | 一种基于局域网的软件升级方法、装置和系统 | |
CN109976921A (zh) | Rpc服务或消息的指定消费方法及装置、可存储介质和终端 | |
US8943184B2 (en) | Abstract representation and provisioning of network services | |
CN110535831A (zh) | 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质 | |
CN109768871A (zh) | 配置多个虚拟网卡的方法、宿主机和存储介质 | |
CN107967143A (zh) | 获取客户端应用程序源代码的更新指示信息的方法、装置和系统 | |
CN111258627B (zh) | 一种接口文档生成方法和装置 | |
CN110178342A (zh) | Sdn网络的可扩缩应用级别监视 | |
EP2418825A1 (en) | Method and system for generating open telecommunication service based on internet | |
CN110287119A (zh) | 一种基于python的接口自动化测试方法及装置 | |
CN107124430A (zh) | 页面劫持监控方法、装置、系统和存储介质 | |
CN102801714A (zh) | 旁路式解析和还原tns协议中sql命令的方法 | |
CN107635001A (zh) | Web脚本异常处理方法和装置 | |
CN103577180B (zh) | 数据处理方法及装置 | |
US20120266186A1 (en) | Providing inter-platform application launch in context | |
US10334084B2 (en) | Communication method and system based on assembled communication protocol stack | |
CN110083338A (zh) | 基于智能网关的服务系统 | |
CN106686021A (zh) | 一种服务调用方法和网关 | |
CN111367690A (zh) | 一种支持组合api服务调用方法及装置 | |
US9329960B2 (en) | Methods, systems, and computer readable media for utilizing abstracted user-defined data to conduct network protocol testing | |
CN107643858A (zh) | 一种信息处理方法、终端和服务器 | |
CN106302707A (zh) | 一种创建快捷方式的方法及系统 | |
CN108512688A (zh) | 网络节点配置方法和终端 | |
CN112559278B (zh) | 操作数据的获取方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190705 |
|
RJ01 | Rejection of invention patent application after publication |