用于业务分析的代码链路的生成方法、装置及业务服务器与流程

文档序号:17475498发布日期:2019-04-20 06:05阅读:184来源:国知局
用于业务分析的代码链路的生成方法、装置及业务服务器与流程
本说明书实施例涉及数据处理
技术领域
,尤其涉及一种用于业务分析的代码链路的生成方法、装置及业务服务器。
背景技术
:对于复杂的业务系统而言,其承载有较多的业务场景、业务域,当一个业务场景或业务域出现业务问题时,产生问题的原因有可能是代码级的,基于此,确定业务执行所经过的代码链路尤为重要。现有技术中,由分析人员根据开发人员留存的代码文档和数据库数据追溯出业务执行所经过的代码链路,以便于后续依据该代码链路进行业务分析。由此可见,现有技术中业务执行所经过的代码链路的确定依赖于分析人员的主观判断,从而难免出现遗漏或错误,继而也就将影响业务分析结果的准确性。技术实现要素:针对上述技术问题,本说明书实施例提供一种用于业务分析的代码链路的生成方法、装置及业务服务器,技术方案如下:根据本说明书实施例的第一方面,提供一种用于业务分析的代码链路的生成方法,所述方法包括:接收来自客户端的业务请求;处理所述业务请求,并获取在处理所述业务请求的过程中,所调用到的类的调用顺序、类名,以及其包括的方法的方法名;根据所述类的调用顺序、类名,以及方法名得到处理所述业务请求所经过的代码链路。根据本说明书实施例的第二方面,提供一种用于业务分析的代码链路的生成装置,所述装置包括:接收模块,用于接收来自客户端的业务请求;获取模块,用于处理所述业务请求,并获取在处理所述业务请求的过程中,所调用到的类的调用顺序、类名,以及其包括的方法的方法名;链路确定模块,用于根据所述类的调用顺序、类名,以及方法名得到处理所述业务请求所经过的代码链路。根据本说明书实施例的第三方面,提供一种业务服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现本说明书实施例提供的一种用于业务分析的代码链路的生成方法。本说明书实施例所提供的技术方案,通过接收来自客户端的业务请求,处理业务请求,并获取在处理该业务请求的过程中,所调用到的类的调用顺序、类名,以及其包括的方法的方法名,根据类的调用顺序、类名,以及方法名得到处理该业务请求所经过的代码链路,由于最终得到的代码链路是通过线上真实的运行数据确定的,从而该代码链路的准确性较高,进一步也就可以提高后续基于代码链路进行业务分析的准确性。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。附图说明为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1为本说明书一示例性实施例提供的一种用于业务分析的代码链路的生成方法的实施例流程图;图2为处理业务请求所经过的代码链路的一种示例;图3为本说明书一示例性实施例提供的一种用于业务分析的代码链路的生成装置的实施例框图;图4示出了本说明书实施例所提供的一种更为具体的业务服务器的硬件结构示意图。具体实施方式为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。为了解决现有技术中业务执行所经过的代码链路的确定依赖于分析人员的主观判断,从而难免出现遗漏或错误,继而也就将影响业务分析结果的准确性的问题,本说明书实施例提供一种用于业务分析的代码链路的生成方法,以实现根据真实的线上数据确定出业务执行所经过的代码链路,进一步提高后续基于代码链路进行业务分析的准确性。如下,示出下述实施例对该方法进行说明:请参见图1,为本说明书一示例性实施例提供的一种用于业务分析的代码链路的生成方法的实施例流程图,该方法包括以下步骤:步骤102:接收来自客户端的业务请求。步骤104:处理业务请求,并获取在处理该业务请求的过程中,所调用到的类的调用顺序、类名,以及其包括的方法的方法名。步骤106:根据类的调用顺序、类名,以及方法名得到处理该业务请求所经过的代码链路。如下,对步骤102至步骤106进行说明:在本说明书实施例中,在处理步骤102接收到的业务请求的过程中,可以监测业务系统所调用的类,每当监测到业务系统调用一个类时,则可以利用java发射机制,例如利用java拦截器获取该被调用的类的类名,与该类包括的方法的方法名。之后,可以按照获取顺序,将获取到的类名与方法名写入一个预先设置的有序列表中,例如,可以每获取到一个类的类名与该类包括的方法的方法名,则可以将获取到的类名与方法名写入该有序列表中。通过该种处理,则可以实现通过有序列表记录处理该业务请求的过程中依次调用的每一个类的调用顺序、类名,及其包括的方法的方法名。举例来说,假设处理业务请求的过程中,依次调用了classa,classb,classc,classd,classe,classf,通过如上处理,所得到的有序列表可以如下述表1所示:表1classaclassbclasscclassdclassfclasse需要说明的是,在上述表1中,仅仅示出了被调用的类的类名,实际上该有序列表里还记录有类包括的方法的方法名,本说明书对此不再作示例。后续,在步骤106中,则可以基于表1所示例的有序列表中所记录的类的调用顺序、类名及方法名得到处理该业务请求所经过的代码链路,例如,如图2所示,为处理业务请求所经过的代码链路的一种示例,图2所示例的代码链路为:classamethoda>>classamethodb>>classbmethodc>>classcmethodd>>classcmethode>>classamethoda>>classamethodb此外,在本说明书实施例中,考虑到处理属于同一业务类型的业务请求时,所经过的代码链路一致,从而在针对一业务类型的业务请求,获取到处理该业务请求所经过的代码链路后,可以在本地存储该业务请求所属的业务类型与获取到的代码链路的对应关系,通过该种处理,可以实现后续再处理属于该同一业务类型的业务请求时,可以不再重复获取处理该业务请求所经过的代码链路,从而有效节省计算资源。在一实施例中,可以提取出业务请求所包括的特征维度,根据所提取出的特征维度确定该业务请求所属的业务类型,为了描述方便,将该业务类型称为目标业务类型。举例来说,假设客户端发起一条用于从银行卡转账至余额宝的业务请求,那么,该业务请求所包括的特征维度为:银行卡、转账、余额宝,基于该特征维度所确定出的目标业务类型可以为“银行卡转账至余额宝”;再举例来说,假设客户端发起一条用于从余额宝转账至银行卡的业务请求,那么,该业务请求所包括的特征维度为:余额宝、转账、银行卡,基于该特征维度所确定出的目标业务类型可以为“余额宝转账至银行卡”。通过上述描述可知,尽管业务请求所包括的特征维度相同,但其排列顺序不同,其所属的目标业务类型也就不相同。在一实施例中,在获取到上述表1所示例的有序列表后,可以对该有序列表进行哈希运算,得到一个哈希值,该哈希值则可唯一标识一条处理业务请求所经过的代码链路,基于此,可以以在本地存储该哈希值的形式实现存储该代码链路。由于有序列表中记录有多个类的类名,与方法名,而哈希值则仅占用有限的字节数,从而通过该种处理,可以有效节省存储资源。基于上述描述,在本说明书实施例中,在确定出业务请求所属的目标业务类型后,可以首先在本地存储的业务类型与哈希值的对应关系中查找该目标业务类型,若未查找到该目标业务类型,则可以获取处理该业务请求所经过的代码链路;反之,若查找到该目标业务类型,则可以不再重复获取处理该业务请求所经过的代码链路。此外,在本说明书实施例中,可以为本地存储的每一条业务类型与哈希值的对应关系设置一个生存时长,例如,该生存时长以“天”为单位计数,那么,从在本地存储该对应关系的时刻起,每隔一天,则可以对其生存时长做加1处理(生存时长的初始值为0),当该生存时长达到预设的生命时长阈值,例如30时,则可以将该对应关系从本地删除。通过该种处理,可以有效保证代码链路的实时性和准确性。此外,在本说明书实施例中,得到处理业务请求所经过的代码链路后,可以根据该代码链路统计得出一些指标值,例如,统计得出该代码链路所调用到的类的个数、调用次数最多的类,等等,以便分析人员根据该些指标值进行业务分析。本说明书实施例所提供的技术方案,通过接收来自客户端的业务请求,处理业务请求,并获取在处理该业务请求的过程中,所调用到的类的调用顺序、类名,以及其包括的方法的方法名,根据类的调用顺序、类名,以及方法名得到处理该业务请求所经过的代码链路,由于最终得到的代码链路是通过线上真实的运行数据确定的,从而该代码链路的准确性较高,进一步也就可以提高后续基于代码链路进行业务分析的准确性。相应于上述方法实施例,本说明书实施例还提供一种用于业务分析的代码链路的生成装置,参见图3所示,为本说明书一示例性实施例提供的一种用于业务分析的代码链路的生成装置的实施例框图,该装置可以包括:接收模块31、获取模块32,以及链路确定模块33。在一实施例中,接收模块31,可以用于接收来自客户端的业务请求;获取模块32,可以用于处理所述业务请求,并获取在处理所述业务请求的过程中,所调用到的类的调用顺序、类名,以及其包括的方法的方法名;链路确定模块33,可以用于根据所述类的调用顺序、类名,以及方法名得到处理所述业务请求所经过的代码链路。在一实施例中,所述获取模块32可以包括(图3中未示出):第一获取子模块,用于在处理所述业务请求的过程中,每当监测到业务系统调用一个类时,则利用java反射机制获取所述类的类名与其包括的方法的方法名;写入子模块,用于按照获取顺序,将获取到的类名与方法名写入预设的有序列表中。在一实施例中,所述装置还可以包括(图3中未示出):提取模块,用于提取出所述业务请求包括的特征维度;类型确定模块,用于根据所提取出的特征维度确定所述业务请求所属的目标业务类型;运算模块,用于对所述有序列表进行哈希运算,得到所述业务请求所经过的代码链路的哈希值;存储模块,用于在本地存储所述目标业务类型与所述业务请求所经过的代码链路的哈希值的对应关系。在一实施例中,所述获取模块32可以包括(图3中未示出):查找子模块,用于根据所述目标业务类型查找本地存储的业务类型与哈希值的对应关系;第二获取子模块,用于若未查找到所述目标业务类型,则获取在处理所述业务请求的过程中,所调用到的类的调用顺序、类名,以及其包括的方法的方法名。可以理解的是,接收模块31、获取模块32,以及链路确定模块33作为三种功能独立的模块,既可以如图3所示同时配置在装置中,也可以分别单独配置在装置中,因此图3所示的结构不应理解为对本说明书实施例方案的限定。此外,上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的一种用于业务分析的代码链路的生成方法。该方法至少包括:接收来自客户端的业务请求;处理所述业务请求,并获取在处理所述业务请求的过程中,所调用到的类的调用顺序、类名,以及其包括的方法的方法名;根据所述类的调用顺序、类名,以及方法名得到处理所述业务请求所经过的代码链路。图4示出了本说明书实施例所提供的一种更为具体的业务服务器的硬件结构示意图,该设备可以包括:处理器410、存储器420、输入/输出接口430、通信接口440和总线450。其中处理器410、存储器420、输入/输出接口430和通信接口440通过总线450实现彼此之间在设备内部的通信连接。处理器410可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。存储器420可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器420可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器420中,并由处理器410来调用执行。输入/输出接口430用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。通信接口440用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。总线450包括一通路,在设备的各个组件(例如处理器410、存储器420、输入/输出接口430和通信接口440)之间传输信息。需要说明的是,尽管上述设备仅示出了处理器410、存储器420、输入/输出接口430、通信接口440以及总线450,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的一种用于业务分析的代码链路的生成方法。该方法至少包括:接收来自客户端的业务请求;处理所述业务请求,并获取在处理所述业务请求的过程中,所调用到的类的调用顺序、类名,以及其包括的方法的方法名;根据所述类的调用顺序、类名,以及方法名得到处理所述业务请求所经过的代码链路。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1