分布式服务的调试方法、装置、存储介质和计算机设备与流程

文档序号:14253206阅读:345来源:国知局
分布式服务的调试方法、装置、存储介质和计算机设备与流程

本发明涉及调试技术领域,特别是涉及一种分布式服务的调试方法、装置、存储介质和计算机设备。



背景技术:

分布式服务指数据和程序提供的服务分散到多个服务器,一个服务器叫服务节点,一个服务节点里可以包含多种服务。一种类型的服务,可以分布在多个服务节点上,在一个节点也允许运行多个同类型的服务实例。

传统技术中,对分布式服务中的服务节点进行调试时,通常是由服务端开启一个调试端口,调试客户端通过debug协议与其交互调试,由于分布式服务节点众多,调试客户端需要连接多个服务端,交互复杂,导致调试效率低,且对于服务节点来说,对外开放调试端口,可能带来安全隐患。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种分布式服务的调试方法、装置、存储介质和计算机设备,以提高调试效率,同时降低安全隐患。

一种分布式服务的调试方法,所述方法包括:

查询断点信息,根据所述断点信息中断调用线程;

向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求,所述信息转发请求用于指示所述代理服务器将所述当前堆栈桢信息及标识信息转发至调试客户端;

接收所述代理服务器转发的调试客户端根据所述当前堆栈桢信息及标识信息生成的调试命令,根据所述调试命令生成调试结果。

在其中一个实施例中,所述查询断点信息,根据所述断点信息中断调用线程的步骤之前还包括:

从所述代理服务器获取断点信息,将所述断点信息存储至本地。

在其中一个实施例中,所述查询断点信息,根据所述断点信息中断调用线程的步骤之前还包括:

接收代理服务器发送的业务调用请求,查询所述业务调用请求对应的当前业务逻辑;

根据所述当前业务逻辑执行调用线程。

在其中一个实施例中,所述向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求的步骤之后还包括:

获取本地锁;

向代理服务器申请远程锁,并监听所述远程锁;

当监听到所述远程锁被释放时,释放本地锁并恢复调用线程。

一种分布式服务的调试装置,所述装置包括:

断点信息查询模块,用于查询断点信息,根据所述断点信息中断调用线程;

信息转发请求发送模块,用于向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求,所述信息转发请求用于指示所述代理服务器将所述当前堆栈桢信息及标识信息转发至调试客户端;

调试命令接收模块,用于接收所述代理服务器转发的调试客户端根据所述当前堆栈桢信息及标识信息生成的调试命令,根据所述调试命令生成调试结果。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述分布式服务的调试方法的步骤。

一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述分布式服务的调试方法的步骤。

上述分布式服务的调试方法、装置、存储介质和计算机设备,由于各个服务节点只需要要与代理服务器进行通讯,通过代理服务器接收调试客户端的调试命令并转发调试结果,因此,不需要再向调试客户端提供调试端口,降低了调试时的安全隐患。同时,由于调试时,调试客户端只需要同代理服务器进行通讯,不需要与参与调试的节点一一建立通讯连接,简化了调试时的交互流程,从而提高了调试客户端的调试效率。

一种分布式服务的调试方法,所述方法包括:

在服务节点根据断点信息中断调用线程时,接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据所述信息转发请求将所述当前堆栈桢信息及标识信息发送至调试客户端;

接收调试客户端发送的根据所述当前堆栈桢信息及标识信息生成的调试命令,所述调试命令携带所述标识信息;

将所述调试命令转发至所述标识信息对应的服务节点,所述调试命令用于指示所述服务节点生成调试结果。

在其中一个实施例中,所述接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据所述信息转发请求将所述当前堆栈桢信息及标识信息发送至调试客户端的步骤之前包括:

接收调试客户端发送的业务调用请求,所述业务调用请求中携带所述业务调用请求对应的服务类型;

根据所述服务类型查询注册表,得到所述业务调用请求对应的标识信息;

将所述业务调用请求发送至所述标识信息对应的服务节点,所述业务调用请求用于指示所述服务节点调用所述标识信息对应的服务实例执行调用线程。

在其中一个实施例中,所述接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据所述信息转发请求将所述当前堆栈桢信息及标识信息发送至调试客户端的步骤之前还包括:

接收调试客户端发送的断点信息;

接收服务节点发送的携带标识信息的断点信息获取请求,将所述断点信息发送至所述标识信息对应的服务节点。

在其中一个实施例中,所述接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据所述信息转发请求将所述当前堆栈桢信息及标识信息发送至调试客户端的步骤之前还包括:

在服务节点获取到本地锁后,创建所述本地锁对应的远程锁;

所述将所述调试命令转发至所述标识信息对应的服务节点,所述调试命令用于指示所述服务节点生成调试结果的步骤之后包括:

接收调试客户端发送的恢复命令,所述恢复命令携带标识信息;

根据所述恢复命令释放所述标识信息对应的远程锁。

一种分布式服务的调试装置,所述装置包括:

信息转发请求接收模块,用于在服务节点根据断点信息中断调用线程时,接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据所述信息转发请求将所述当前堆栈桢信息及标识信息发送至调试客户端;

调试命令接收模块,用于接收调试客户端发送的根据所述当前堆栈桢信息及标识信息生成的调试命令,所述调试命令携带所述标识信息;

调试命令转发模块,将所述调试命令转发至所述标识信息对应的服务节点,所述调试命令用于指示所述服务节点生成调试结果。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述分布式服务的调试的步骤。

一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述分布式服务的调试的步骤。

上述分布式服务的调试方法、装置、存储介质和计算机设备,由于各个服务节点只需要要与代理服务器进行通讯,通过代理服务器接收调试客户端的调试命令并转发调试结果,因此,不需要再向调试客户端提供调试端口,降低了调试时的安全隐患。同时,由于调试时,调试客户端只需要同代理服务器进行通讯,不需要与参与调试的节点一一建立通讯连接,简化了调试时的交互流程,从而提高了调试客户端的调试效率。

附图说明

图1为一个实施例中分布式服务的调试方法的应用环境图;

图2为一个实施例中分布式服务的调试方法的流程图;

图3为一个实施例中分布式服务的调试方法的流程图;

图4为一个实施例中图1中步骤s220之后的步骤流程图;

图5为一个实施例中分布式服务的调试装置的结构示意图;

图6为另一个实施例中分布式服务的调试装置的结构示意图;

图7为又一个实施例中分布式服务的调试方法的流程图;

图8为一个实施例中图7中步骤s710之前的步骤流程图;

图9为另一个实施例中图7中步骤s710之前的步骤流程图;

图10为又一个实施例中图7中步骤s710之前的步骤流程图;

图11为一个实施例中分布式服务的调试装置的结构示意图;

图12为一个实施例中计算机设备的内部结构图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施的限制。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本发明。

图1为一个实施例中提供的分布式服务的调试的应用环境图,如图1所示,在该应用环境中,包括调试客户端110、代理服务器120、服务节点130,服务节点130包括多个分布式的服务节点,每一个服务节点上都可以运行多个服务实例,其中,服务实例指的是运行中的服务程序。在本实施例中,调试客户端110通过https协议与代理服务器120进行通讯,代理服务器120通过rpc协议与服务节点130进行通讯。

在一个实施例中,如图2所示,提供了一种分布式服务的调试方法,以该方法应用于图1中的其中一个服务节点130为例进行说明,包括:

步骤s210,查询断点信息,根据断点信息中断调用线程。

具体地,断点包括接口断点和脚本断点,接口断点对应的断点信息包括服务类型和方法,脚本断点对应的断点信息包括脚本文件名和行号。调用线程指的是服务节点上的服务实例执行业务调用时的线程。

在一个实施例中,调试客户端设置好断点信息后,将断点信息发送至代理服务器,代理服务器接收到断点信息后对断点信息进行存储。服务节点在运行服务实例时,可以向代理服务器请求查询断点信息,根据查询到的断点信息判断当前调用的接口或者执行的脚本是否与断点信息匹配,若匹配,则在断点处中断调用线程。

在一个实施例中,调试客户端在设置断点信息之前必须先进行身份认证,身份认证通过后才可以进行断点设置。具体地,调试客户端进行身份认证包括以下步骤:接收身份认证指令,将身份认证指令中包含的账号信息与密码信息与预设的账号信息、密码信息进行匹配,匹配成功时,身份认证通过。

步骤s220,向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求,信息转发请求用于指示代理服务器将当前堆栈桢信息及标识信息转发至调试客户端。

具体地,堆栈桢信息指的是程序运行到该断点时的环境信息,如当前程序中的变量、执行线程。标识信息包括服务节点标识信息以及服务实例标识信息,服务节点标识信息用于唯一标识当前服务节点,服务实例标识信息用于唯一标识当前服务实例,其中当前服务实例指的是断点对应的服务实例,当前服务节点指的是运行当前服务实例的服务节点。

在本实施例中,在调用线程中断后,服务节点将当前堆栈桢信息及标识信息发送至代理服务器,代理服务器接收到堆栈桢信息及标识信息后,将堆栈桢信息及标识信息发送至调试客户端。

步骤s230,接收代理服务器转发的调试客户端根据当前堆栈桢信息及标识信息生成的调试命令,根据调试命令生成调试结果。

具体地,调试客户端接收到当前堆栈桢信息及标识信息后,根据堆栈桢信息判断是否需要进行调试,当需要调试时,根据堆栈桢信息及标识信息生成调试命令,并在该调试命令中携带该标识信息,该标识信息同样包括服务节点标识信息及服务实例标识信息,代理服务器接收到的调试命令后,根据调试命令中携带的标识信息将调试命令发送至对应的服务节点,服务节点接收到调试命令后将调试命令发送至标识信息对应的服务实例,并在服务实例执行调试后生成调试结果。

在一个实施例中,服务节点生成调试结果后返回服务实例上的将调试结果返回至代理服务器,代理服务器将该调试结果发送至调试客户端。

如调试客户端发送的调试命令为“查看某个变量”,代理服务器将该调试命名转发给服务节点后,服务节点将该调试命名发送至对应的服务实例,在服务实例解析变量值后,服务节点将该变量值返回给代理服务器,由代理服务器转发给调试客户端。

上述分布式服务的调试方法,由于各个服务节点只需要要与代理服务器进行通讯,通过代理服务器接收调试客户端的调试命令并转发调试结果,因此,不需要再向调试客户端提供调试端口,降低了调试时的安全隐患。同时,由于调试时,调试客户端只需要同代理服务器进行通讯,不需要与参与调试的节点一一建立通讯连接,简化了调试时的交互流程,从而提高了调试客户端的调试效率。

在一个实施例中,查询断点信息,根据断点信息中断调用线程的步骤之前还包括:从代理服务器获取断点信息,将断点信息存储至本地。具体地,在本实施例中,服务节点接收到业务调用请求后,自动从代理服务器获取断点信息,并将该断点信息存储至本地。断点信息存储至本地后,服务节点可直接从本地查询断点信息,不需要再从代理服务器查询断点信息,从而进一步提高调试效率。

在一个实施例中,如图3所示,查询断点信息,根据断点信息中断调用线程的步骤之前还包括:

步骤s240,接收代理服务器发送的业务调用请求,查询业务调用请求对应的当前业务逻辑,根据当前业务逻辑执行调用线程。

具体地,业务逻辑是指一个实体单元为了向另一个实体单元提供服务,应该具备的规则与流程。以网购裤子为例,业务逻辑包括:搜索“裤子”-找到合意裤子-下单-必须登录账号-结算-付账-收货。值得说明的是,根据不同的业务需求及系统数据,业务逻辑是不相同的,如当当必须登录账号才能下单成功,而亚马逊则不需要。

在本实施例中,调试客户端根据不同的业务需求生成业务调用请求,将该业务调用请求发送至代理服务器,该业务调用请求中携带本次业务调用的服务信息,该服务信息包括服务类型以及服务类型对应的方法,代理服务器接收到业务调用请求后,查询其预先存储的注册表,该注册表中保存有服务类型、服务类型对应的服务节点标识以及服务实例标识等信息,代理服务器查询到匹配业务调用请求的服务类型后基于负载均衡策略定位服务实例,将该业务调用请求转发至该服务实例对应的服务节点,服务节点接收到该业务调用请求后运行该服务实例,同时查询该业务调用请求对应的当前业务逻辑,根据当前业务逻辑调用其他服务实例执行调用线程。

在一个实施例中,如图4所示,向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求的步骤之后还包括:

步骤s410,获取本地锁。

步骤s420,向代理服务器申请远程锁,并监听远程锁。

步骤s430,当监听到远程锁被释放时,释放本地锁并恢复调用线程。

具体地,本地锁用于锁住调用线程,确保调用线程中断后,不能修改当前代码或变量。远程锁为代理服务器持有的与服务节点上的本地锁的锁对象相同的锁。

在本实施例中,在调用线程中断后,服务节点会在本地尝试获取本地锁,获取到本地锁后会向代理服务器申请远程锁,代理服务器根据服务节点的申请创建远程锁,远程锁的锁对象与本地锁的锁对象相同。

在一个实施例中,若服务节点超时后没有申请到远程锁,则对本地锁进行释放。

在一个实施例中,本地锁是从localregistry中获取的锁,其中,锁是java开发包里面的reentrantlock。

在一个实施例中,如图5所示,提供一种分布式服务的调试装置500,包括:

断点信息查询模块502,用于查询断点信息,根据断点信息中断调用线程;

信息转发请求发送模块504,用于向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求,信息转发请求用于指示代理服务器将当前堆栈桢信息及标识信息转发至调试客户端;

调试命令接收模块506,用于接收代理服务器转发的调试客户端根据当前堆栈桢信息及标识信息生成的调试命令,根据调试命令生成调试结果。

上述分布式服务的调试装置,由于各个服务节点只需要要与代理服务器进行通讯,通过代理服务器接收调试客户端的调试命令并转发调试结果,因此,不需要再向调试客户端提供调试端口,降低了调试时的安全隐患。同时,由于调试时,调试客户端只需要同代理服务器进行通讯,不需要与参与调试的节点一一建立通讯连接,简化了调试时的交互流程,从而提高了调试客户端的调试效率。

在一个实施例中,上述装置还包括存储模块,用于从代理服务器获取断点信息,将断点信息存储至本地。

在一个实施例中,上述装置还包括:调用线程执行模块,用于接收代理服务器发送的业务调用请求,查询业务调用请求对应的当前业务逻辑并根据当前业务逻辑执行调用线程。

在一个实施例中,如图6所示,上述装置还包括:

本地锁获取模块510,用于获取本地锁;

监听模块512,用于向代理服务器申请远程锁,并监听远程锁;

本地锁释放模块514,用于当监听到远程锁被释放时,释放本地锁并恢复调用线程。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:查询断点信息,根据断点信息中断调用线程;向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求,信息转发请求用于指示代理服务器将当前堆栈桢信息及标识信息转发至调试客户端;接收代理服务器转发的调试客户端根据当前堆栈桢信息及标识信息生成的调试命令,根据调试命令生成调试结果。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行查询断点信息,根据断点信息中断调用线程的步骤之前还执行以下步骤:从代理服务器获取断点信息,将断点信息存储至本地。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行查询断点信息,根据断点信息中断调用线程的步骤之前还执行以下步骤:接收代理服务器发送的业务调用请求,查询业务调用请求对应的当前业务逻辑;根据当前业务逻辑执行调用线程。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求的步骤之后还执行以下步骤:获取本地锁;向代理服务器申请远程锁,并监听远程锁;当监听到远程锁被释放时,释放本地锁并恢复调用线程。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:查询断点信息,根据断点信息中断调用线程;向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求,信息转发请求用于指示代理服务器将当前堆栈桢信息及标识信息转发至调试客户端;接收代理服务器转发的调试客户端根据当前堆栈桢信息及标识信息生成的调试命令,根据调试命令生成调试结果。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行查询断点信息,根据断点信息中断调用线程的步骤之前还执行以下步骤:从代理服务器获取断点信息,将断点信息存储至本地。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行查询断点信息,根据断点信息中断调用线程的步骤之前还执行以下步骤:接收代理服务器发送的业务调用请求,查询业务调用请求对应的当前业务逻辑;根据当前业务逻辑执行调用线程。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求的步骤之后还执行以下步骤:获取本地锁;向代理服务器申请远程锁,并监听远程锁;当监听到远程锁被释放时,释放本地锁并恢复调用线程。

在一个实施例中,如图7所示,提供一种分布式服务的调试方法,以该方法应用于图1中的代理服务器120为例进行说明,包括:

步骤s710,在服务节点根据断点信息中断调用线程时,接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端。

具体地,断点包括接口断点和脚本断点,接口断点对应的断点信息包括服务类型和方法,脚本断点对应的断点信息包括脚本文件名和行号。调用线程指的是服务节点上的服务实例执行当前业务时的线程。堆栈桢信息指的是程序运行到该断点时的环境信息,如当前程序中的变量、执行线程。标识信息包括服务节点标识信息以及服务实例标识信息,服务节点标识信息用于唯一标识当前服务节点,服务实例标识信息用于唯一标识当前服务实例,其中当前服务实例指的是断点对应的服务实例,当前服务节点指的是运行当前服务实例的服务节点。

在一个实施例中,调试客户端设置好断点信息后,将断点信息发送至代理服务器,代理服务器接收到断点信息后对断点信息进行存储。服务节点在运行服务实例时,可以向代理服务器请求查询断点信息,根据查询到的断点信息判断当前调用的接口或者执行的脚本是否与断点信息匹配,若匹配,则在该断点处中断调用线程。

进一步,在调用线程中断后,服务节点向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求,代理服务器接收到该信息转发请求后,将该当前堆栈桢信息及当前标识信息发送至调试客户端。

步骤s720,接收调试客户端发送的根据当前堆栈桢信息及标识信息生成的调试命令,调试命令携带标识信息。

具体地,调试客户端接收到当前堆栈桢信息及标识信息后,根据堆栈桢信息判断是否需要进行调试,当需要调试时,根据堆栈桢信息及标识信息生成调试命令,并在该调试命令中携带该标识信息,该标识信息同样包括服务节点标识信息及服务实例标识信息。

步骤s730,将调试命令转发至标识信息对应的服务节点,调试命令用于指示服务节点生成调试结果。

具体地,代理服务器接收到的调试命令后,根据调试命令中携带的标识信息将调试命名发送至对应的服务节点,服务节点接收到调试命令后将调试命令发送至调试命令对应的服务实例并在服务实例执行调试后生成调试结果。

在一个实施例中,服务节点生成调试结果后将调试结果返回至代理服务器,代理服务器将该调试结果发送至调试客户端。

如调试客户端发送的调试命令为“查看某个变量”,代理服务器将该调试命名转发给服务节点后,服务节点将该调试命名发送至对应的服务实例,在服务实例解析变量值后,服务节点将该变量值返回给代理服务器,由代理服务器转发给调试客户端。

上述的分布式服务的调试方法,由于各个服务节点只需要要与代理服务器进行通讯,通过代理服务器接收调试客户端的调试命令并转发调试结果,因此,不需要再向调试客户端提供调试端口,降低了调试时的安全隐患。同时,由于调试时,调试客户端只需要同代理服务器进行通讯,不需要与参与调试的节点一一建立通讯连接,简化了调试时的交互流程,从而提高了调试客户端的调试效率。

在一个实施例中,如图8所示,接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端的步骤之前包括:

步骤s810,接收调试客户端发送的业务调用请求,业务调用请求中携带业务调用请求对应的服务类型。

步骤s820,根据服务类型查询注册表,得到业务调用请求对应的标识信息。

具体地,服务类型指的是业务的服务接口类,如:kd.fi.gl.voucherservice。

在本实施例中,调试客户端根据不同的业务需求生成业务调用请求,将该业务调用请求发送至代理服务器,该业务调用请求中携带本次业务调用的服务信息,该服务信息包括服务类型以及服务类型对应的方法,代理服务器接收到业务调用请求后,查询其预先存储的注册表,该注册表中保存有服务类型、服务类型对应的服务节点标识以及服务实例标识等信息,代理服务器查询到匹配业务调用请求的服务类型后基于负载均衡策略定位服务实例,获取该服务实例的标识信息以及该服务实例对应的服务节点的标识信息。

步骤s830,将业务调用请求发送至标识信息对应的服务节点,业务调用请求用于指示服务节点调用标识信息对应的服务实例执行调用线程。

具体地,代理服务器将该业务调用请求转发至该服务实例对应的服务节点,服务节点接收到该业务调用请求后查询该业务调用请求对应的当前业务逻辑,根据当前业务逻辑调用对应的服务实例执行调用线程,其中,业务逻辑是指一个实体单元为了向另一个实体单元提供服务,应该具备的规则与流程。

在一个实施例中,如图9所示,接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端的步骤之前还包括:

步骤s910,接收调试客户端发送的断点信息。

步骤s920,接收服务节点发送的携带标识信息的断点信息获取请求,将断点信息发送至标识信息对应的服务节点。

在本实施例中,服务节点接收到业务调用请求后,调用对应的服务实例执行调用线程并向代理服务器发送请求获取断点信息,并在断点信息获取请求中携带自身的服务节点标识信息,代理服务器接收到断点信息获取请求将断点信息发送至服务节点标识信息对应的服务节点,该服务节点将接收到的断点信息存储至本地。断点信息存储至本地后,服务节点可直接从本地查询断点信息,不需要再从代理服务器查询断点信息,从而进一步提高调试效率。

在一个实施例中,如图10所示,接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端的步骤之前还包括:

步骤s1010,在服务节点获取到本地锁后,创建本地锁对应的远程锁。

具体地,本地锁用于锁住调用线程,确保调用线程中断后,不能修改当前代码或变量。远程锁为代理服务器持有的与服务节点上的本地锁的锁对象相同的锁。

在本实施例中,在调用线程中断后,服务节点会在本地尝试获取本地锁,获取到本地锁后会向代理服务器申请远程锁,代理服务器根据服务节点的申请创建远程锁,远程锁的锁对象与本地锁的锁对象相同。

在一个实施例中,若服务节点超时后没有申请到远程锁,则对本地锁进行释放。

在一个实施例中,本地锁是从localregistry中获取的锁,其中,锁是java开发包里面的reentrantlock。

将调试命令转发至标识信息对应的服务节点,调试命令用于指示服务节点生成调试结果的步骤之后包括:

步骤s1020,接收调试客户端发送的恢复命令,根据恢复命令释放远程锁。

具体地,调试客户端接收到代理服务器转发的调试结果后,可向代理服务器发送恢复命令,该恢复命令中携带标识信息,该标识信息包括服务节点标识信息及服务实例标识信息,代理服务器接收到调试命令后,释放与标识信息对应的锁对象相同的远程锁。

进一步,服务节点监听到远程锁被释放后,释放远程锁对应的本地锁,继续执行调用线程。

在本实施例中,调试服务器通过创建远程锁,与服务器节点的本地锁共同构成分布式锁,使得调试时调用线程无法修改断点处的变量会代码,保证了数据的一致性。

在一个实施例中,如图11所示,提供一种分布式服务的调试装置1100,包括:

信息转发请求接收模块1102,用于在服务节点根据断点信息中断调用线程时,接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端;

调试命令接收模块1104,用于接收调试客户端发送的根据当前堆栈桢信息及标识信息生成的调试命令,调试命令携带标识信息;

调试命令转发模块1106,将调试命令转发至标识信息对应的服务节点,调试命令用于指示服务节点生成调试结果。

上述的分布式服务的调试装置,由于各个服务节点只需要要与代理服务器进行通讯,通过代理服务器接收调试客户端的调试命令并转发调试结果,因此,不需要再向调试客户端提供调试端口,降低了调试时的安全隐患。同时,由于调试时,调试客户端只需要同代理服务器进行通讯,不需要与参与调试的节点一一建立通讯连接,简化了调试时的交互流程,从而提高了调试客户端的调试效率。

在一个实施例中,上述装置还包括:业务调用请求接收模块,用于接收调试客户端发送的业务调用请求,业务调用请求中携带业务调用请求对应的服务类型;标识信息获取模块,用于根据服务类型查询注册表,得到业务调用请求对应的标识信息;业务调用请求发送模块,用于将业务调用请求发送至标识信息对应的服务节点,业务调用请求用于指示服务节点调用标识信息对应的服务实例执行调用线程。

在一个实施例中,上述装置还包括:断点信息接收模块,用于接收调试客户端发送的断点信息;断点信息获取请求接收模块,用于接收服务节点发送的携带标识信息的断点信息获取请求,将断点信息发送至标识信息对应的服务节点。

在一个实施例中,上述装置还包括:远程锁创建模块,用于在服务节点获取到本地锁后,创建本地锁对应的远程锁;恢复命令接收模块,用于接收调试客户端发送的恢复命令,恢复命令携带标识信息;远程锁释放模块,用于根据恢复命令释放标识信息对应的远程锁。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:在服务节点根据断点信息中断调用线程时,接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端;接收调试客户端发送的根据当前堆栈桢信息及标识信息生成的调试命令,调试命令携带标识信息;将调试命令转发至标识信息对应的服务节点,调试命令用于指示服务节点生成调试结果。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端的步骤之前还执行以下步骤:接收调试客户端发送的业务调用请求,业务调用请求中携带业务调用请求对应的服务类型;根据服务类型查询注册表,得到业务调用请求对应的标识信息;将业务调用请求发送至标识信息对应的服务节点,业务调用请求用于指示服务节点调用标识信息对应的服务实例执行调用线程。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端的步骤之前还执行以下步骤:接收调试客户端发送的断点信息;接收服务节点发送的携带标识信息的断点信息获取请求,将断点信息发送至标识信息对应的服务节点。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端的步骤之后还执行以下步骤:在服务节点获取到本地锁后,创建本地锁对应的远程锁;计算机程序被处理器执行时,使得处理器执行将调试命令转发至标识信息对应的服务节点,调试命令用于指示服务节点生成调试结果的步骤之后还执行以下步骤:接收调试客户端发送的恢复命令,恢复命令携带标识信息;根据恢复命令释放标识信息对应的远程锁。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:在服务节点根据断点信息中断调用线程时,接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端;接收调试客户端发送的根据当前堆栈桢信息及标识信息生成的调试命令,调试命令携带标识信息;将调试命令转发至标识信息对应的服务节点,调试命令用于指示服务节点生成调试结果。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端的步骤之前还执行以下步骤:接收调试客户端发送的业务调用请求,业务调用请求中携带业务调用请求对应的服务类型;根据服务类型查询注册表,得到业务调用请求对应的标识信息;将业务调用请求发送至标识信息对应的服务节点,业务调用请求用于指示服务节点调用标识信息对应的服务实例执行调用线程。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端的步骤之前还执行以下步骤:接收调试客户端发送的断点信息;接收服务节点发送的携带标识信息的断点信息获取请求,将断点信息发送至标识信息对应的服务节点。

在一个实施例中,计算机程序被处理器执行时,使得处理器执行接收服务节点发送的携带当前堆栈桢信息及标识信息的信息转发请求,根据信息转发请求将当前堆栈桢信息及标识信息发送至调试客户端的步骤之后还执行以下步骤:在服务节点获取到本地锁后,创建本地锁对应的远程锁;计算机程序被处理器执行时,使得处理器执行将调试命令转发至标识信息对应的服务节点,调试命令用于指示服务节点生成调试结果的步骤之后还执行以下步骤:接收调试客户端发送的恢复命令,恢复命令携带标识信息;根据恢复命令释放标识信息对应的远程锁。

如图12所示,为一个实施例中计算机设备的内部结构图,该计算机设备可用作调试客户端或者代理服务器。该计算机设备通过系统连接总线连接处理器、非易失性存储介质、内存储器和网络接口。其中,该计算机设备的非易失性存储介质可存储操作系统和计算机可读指令,该计算机可读指令被执行时,可使得处理器执行一种分布式服务的调试方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该内存储器中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种分布式服务的调试方法。计算机设备的网络接口用于进行网络通信,如接收语音数据包,发送停止控制指令等。

本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的分布式服务的调试装置可以实现为一种计算机程序的形式,计算机程序可在如图12所示的计算机设备上运行,计算机设备的非易失性存储介质可存储组成该分布式服务的调试装置的各个程序模块,比如图5中的断点信息查询模块502、信息转发请求发送模块504、调试命令接收模块506。各个程序模块中包括计算机可读指令,计算机可读指令用于使计算机设备执行本说明书中描述的本申请各个实施例的分布式服务的调试方法中的步骤,例如,计算机设备可以通过如图5所示的分布式服务的调试装置中的断点信息查询模块502查询断点信息,根据断点信息中断调用线程;通过信息转发请求发送模块504向代理服务器发送携带当前堆栈桢信息及标识信息的信息转发请求;通过调试命令接收模块506接收代理服务器转发的调试客户端根据当前堆栈桢信息及标识信息生成的调试命令,根据调试命令生成调试结果。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1