一种用于程序跟踪的方法、装置及电子设备制造方法及图纸

技术编号:14424769 阅读:73 留言:0更新日期:2017-01-13 03:25
本发明专利技术公开了一种用于程序跟踪的方法、装置及电子设备,一种流量控制方法、装置及电子设备。其中,所述用于程序跟踪的方法包括:接收调用方发送的对应特定程序的调用请求;根据所述调用请求,生成跟踪标识符;执行所述特定程序包括的各级子程序,针对至少一个所述子程序,在所述子程序执行后,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录。采用本申请提供的方法,使得非OSGi的应用程序在跟踪记录OSGi的子程序的功能运行情况时,能够分离子程序的跟踪处理逻辑和业务处理逻辑,避免对各个子程序进行源代码级的改造,从而达到不影响非OSGi的应用程序业务处理的健壮性和可靠性的效果。

【技术实现步骤摘要】

本申请涉及数据处理
,具体涉及一种用于程序跟踪的方法、装置及电子设备。本申请同时涉及一种流量控制方法、装置及电子设备。
技术介绍
在计算机科学中,一个大型程序通常是由多个子程序组成的。子程序作为一个大型程序中的某部份代码,由一个或多个语句块组成。子程序负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。子程序一般会有输入参数并有返回值,能被其他程序调用,也可调用其他子程序,甚至可自身调用(如递归)。子程序的最后一条指令一定是返回指令,故能保证重新返回到调用它的程序中去。在实际应用中,经常需要跟踪大型程序运行过程中各个子程序的实际执行情况,以便定位某个子程序是否出了问题,或者是基于各个子程序的实际执行情况对大型程序进行分析和改造等优化处理。一个非常典型的跟踪程序的应用是,当Web应用的前端用户投诉搜索排名存在问题时,需要在线查询这个搜索行为对应的后端业务执行流程以及流程环节中的数据,以便定位某个模块或者某个业务环节是否出了问题。目前,跟踪程序运行过程中各个子程序执行情况的常用方法,其主要过程如下所述:首先,生成一个对应本次程序运行的跟踪标识符;然后,在每执行完一个子程序后,根据该子程序的实际执行情况,生成该子程序的跟踪数据,并存储跟踪标识符和该单元产生的跟踪数据的对应记录。其中,每个子程序均能够直接读取预先生成的跟踪标识符。OSGi(OpenServiceGatewayinitiative)技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选。Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语,这些组件能够组装进一个应用和部署中。基于OSGi技术的上述优点,OSGi技术在Java语言编写的应用程序中得到了广泛应用。随着OSGi技术在Java应用程序中的广泛应用,在Java应用程序内部执行的流程环节中,程序的跟踪数据可能会经过OSGi环境下的子程序或者非OSGi环境下的子程序。由于OSGi和非OSGi的环境是相互隔离的,因此,非OSGi环境下的程序和OSGi环境下的程序均无法读取在对方环境下声明的变量,例如,OSGi环境下的程序无法读取在非OSGi环境下声明的公共变量。基于上述原因,对于一个既包括非OSGi环境下的子程序又包括OSGi环境下的子程序的Java应用程序而言,上述跟踪程序运行过程中各个子程序的实际执行情况的方法,无法同时跟踪非OSGi环境和OSGi环境下的子程序分别产生的跟踪数据。为了能够同时跟踪非OSGi环境和OSGi环境下的子程序分别产生的跟踪数据,目前常用的方法是在各个子程序(非OSGi环境或OSGi环境)的源代码中加入实现程序跟踪功能的代码,即对各个子程序进行源代码级的改造(亦可称为对原分布式系统的侵入)。该方法在业务处理逻辑中耦合进程序跟踪的处理逻辑,其一方面增加了源代码进行改造升级代价以及后续的系统维护代价,另一方面,由于该方法需要侵入原分布式系统中,影响了原分布式系统业务处理的健壮性和可靠性。综上所述,对一个既包括非OSGi环境下的子程序又包括OSGi环境下的子程序的Java应用程序进行程序跟踪时,现有技术存在程序跟踪的处理逻辑与业务处理逻辑耦合在一起的问题。
技术实现思路
本申请提一种用于程序跟踪的方法、装置及电子设备,以解决现有技术对一个既包括非OSGi环境下的子程序又包括OSGi环境下的子程序的Java应用程序进行程序跟踪时,存在程序跟踪的处理逻辑与业务处理逻辑耦合在一起的问题。本申请另外提供一种流量控制方法、装置及电子设备。本申请提供一种用于程序跟踪的方法,包括:接收调用方发送的对应特定程序的调用请求;根据所述调用请求,生成跟踪标识符;所述跟踪标识符用于标识所述特定程序的本次调用所产生的跟踪数据;执行所述特定程序包括的各级子程序,针对至少一个所述子程序,在所述子程序执行后,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录;其中,用于存储所述跟踪标识符的存储区域和用于存储所述对应记录的存储区域,是指OSGI和非OSGI的子程序均能够访问的存储区域。可选的,所述调用方包括客户端或第三方应用。可选的,所述跟踪标识符包括所述调用方的IP地址、所述跟踪标识符的生成时间、所述调用请求的标识符或发起所述调用请求的线程标识符或进程标识符,以及调用方所属类别的至少一者。可选的,所述根据所述调用请求,生成跟踪标识符,包括:根据所述调用请求,获取所述调用方的IP地址、所述调用请求的标识符或所述发起所述调用请求的线程标识符或进程标识符,以及所述调用方所属类别的至少一者;根据所述调用方的IP地址、所述调用请求的标识符或所述发起所述调用请求的线程标识符或进程标识符、当前系统时间,以及所述调用方所属类别的至少一者,生成所述跟踪标识符。可选的,所述跟踪标识符是全局唯一标识符。可选的,所述根据所述调用请求,生成跟踪标识符,采用如下方式:生成随机数,作为所述跟踪标识符。可选的,所述用于存储所述跟踪标识符的存储区域,采用如下方式创建:在自定义的类加载器中创建所述用于存储所述跟踪标识符的存储区域。可选的,所述用于存储所述对应记录的存储区域,采用如下方式创建:在自定义的类加载器中创建所述用于存储所述对应记录的存储区域。可选的,所述特定程序是指Java程序语言编写的Web应用程序,所述方法还包括:配置Web容器采用所述自定义的类加载器加载所述特定程序。可选的,还包括:在加载所述特定程序的过程中,设置所述特定程序的类加载器为所述自定义的类加载器。可选的,所述用于存储所述跟踪标识符的存储区域,采用如下方式创建:调用预定的非Java程序,在所述预定的非Java程序中创建所述用于存储所述跟踪标识符的存储区域。可选的,所述用于存储所述对应记录的存储区域,采用如下方式创建:调用预定的非Java程序,在所述预定的非Java程序中创建所述用于存储所述对应记录的存储区域。可选的,所述子程序的跟踪数据包括:所述子程序的起始执行时间、所述子程序的实际调用参数、所述子程序的执行结果和所述子程序抛出的异常信息的至少一者。可选的,所述子程序所属的类包括预先编写的生成并存储跟踪数据的方法;所述在所述子程序执行后,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录,包括:判断所述子程序所属的类是否包括所述生成并存储跟踪数据的方法;若上述判断结果为是,则通过所述生成并存储跟踪数据的方法,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录。可选的,所述子程序包括非OSGI的子程序或OSGI的子程序。可选的,所述用于存储所述对应记录的存储区域采用全局变量或预置的上下文数据容器;所述用于存储所述跟踪标识符的存储区域采用全局变量或预置的上下文数据容器。可选的,在所述存储跟踪标识符和所述子程序的跟踪数据的对应记录之前,还包括:激活所述预置的上下文数据容器。可选的,还包括:回收所述预置的上下文数据容器。可选的,在执行所述特定程序包括的各级子程序过程中,如果调用程序运行于第一设备中,被调用程序本文档来自技高网
...
一种用于程序跟踪的方法、装置及电子设备

【技术保护点】
一种用于程序跟踪的方法,其特征在于,包括:接收调用方发送的对应特定程序的调用请求;根据所述调用请求,生成跟踪标识符;所述跟踪标识符用于标识所述特定程序的本次调用所产生的跟踪数据;执行所述特定程序包括的各级子程序,针对至少一个所述子程序,在所述子程序执行后,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录;其中,用于存储所述跟踪标识符的存储区域和用于存储所述对应记录的存储区域,是指OSGI和非OSGI的子程序均能够访问的存储区域。

【技术特征摘要】
1.一种用于程序跟踪的方法,其特征在于,包括:接收调用方发送的对应特定程序的调用请求;根据所述调用请求,生成跟踪标识符;所述跟踪标识符用于标识所述特定程序的本次调用所产生的跟踪数据;执行所述特定程序包括的各级子程序,针对至少一个所述子程序,在所述子程序执行后,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录;其中,用于存储所述跟踪标识符的存储区域和用于存储所述对应记录的存储区域,是指OSGI和非OSGI的子程序均能够访问的存储区域。2.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述调用方包括客户端或第三方应用。3.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述跟踪标识符包括所述调用方的IP地址、所述跟踪标识符的生成时间、所述调用请求的标识符或发起所述调用请求的线程标识符或进程标识符,以及调用方所属类别的至少一者。4.根据权利要求3所述的用于程序跟踪的方法,其特征在于,所述根据所述调用请求,生成跟踪标识符,包括:根据所述调用请求,获取所述调用方的IP地址、所述调用请求的标识符或所述发起所述调用请求的线程标识符或进程标识符,以及所述调用方所属类别的至少一者;根据所述调用方的IP地址、所述调用请求的标识符或所述发起所述调用请求的线程标识符或进程标识符、当前系统时间,以及所述调用方所属类别的至少一者,生成所述跟踪标识符。5.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述跟踪标识符是全局唯一标识符。6.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述根据所述调用请求,生成跟踪标识符,采用如下方式:生成随机数,作为所述跟踪标识符。7.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述用于存
\t储所述跟踪标识符的存储区域,采用如下方式创建:在自定义的类加载器中创建所述用于存储所述跟踪标识符的存储区域。8.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述用于存储所述对应记录的存储区域,采用如下方式创建:在自定义的类加载器中创建所述用于存储所述对应记录的存储区域。9.根据权利要求7或8所述的用于程序跟踪的方法,其特征在于,所述特定程序是指Java程序语言编写的Web应用程序,所述方法还包括:配置Web容器采用所述自定义的类加载器加载所述特定程序。10.根据权利要求7或8所述的用于程序跟踪的方法,其特征在于,还包括:在加载所述特定程序的过程中,设置所述特定程序的类加载器为所述自定义的类加载器。11.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述用于存储所述跟踪标识符的存储区域,采用如下方式创建:调用预定的非Java程序,在所述预定的非Java程序中创建所述用于存储所述跟踪标识符的存储区域。12.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述用于存储所述对应记录的存储区域,采用如下方式创建:调用预定的非Java程序,在所述预定的非Java程序中创建所述用于存储所述对应记录的存储区域。13.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述子程序的跟踪数据包括:所述子程序的起始执行时间、所述子程序的实际调用参数、所述子程序的执行结果和所述子程序抛出的异常信息的至少一者。14.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述子程序所属的类包括预先编写的生成并存储跟踪数据的方法;所述在所述子程序执行后,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录,包括:判断所述子程序所属的类是否包括所述生成并存储跟踪数据的方法;若上述判断结果为是,则通过所述生成并存储跟踪数据的方法,生成所述
\t子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录。15.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述子程序包括非OSGI的子程序或OSGI的子程序。16.根据权利要求1所述的用于程序跟踪的方法,其特征在于,所述用于存储所述对应记录的存储区域采用全局变量或预置的上下文数据容器;所述用于存储所述跟踪标识符的存储区域采用全局变量或预置的上下文数据容器。17.根据权利要求1所述的用于程序跟踪的方法,其特征在于,在所述存储跟踪标识符和所述子程序的跟踪数据的对应记录之前,还包括:激活所述预置的上下文数据容器。18.根据权利要求17所述的用于程序跟踪的方法,其特征在于,还包括:回收所述预置的上下文数据容器。19.根据权利要求1所述的用于程序跟踪的方法,其特征在于,在执行所述特定程序包括的各级子程序过程中,如果调用程序运行于第一设备中,被调用程序运行于第二设备中,则所述调用程序将所述跟踪标识符传递给所述被调用程序;所述在所述子程序执行后,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录,包括:在所述被调用程序执行后,生成所述被调用程序的跟踪数据;根据接收到的所述跟踪标识符,所述被调用程序回调所述调用程序,将所述跟踪数据返回给所述调用程序;所述调用程序存储所述跟踪标识符和所述被调用程序的跟踪数据的对应记录。20.根据权利要求1所述的用于程序跟踪的方法,其特征在于,在执行所述特定程序包括的各级子程序过程中,如果调用单元运行于第一设备中,被调用单元运行于第二设备中,则所述调用单元直接调用所述被调用单元;所述在所述子程序执行后,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录,包括:在所述被调用程序执行后,生成所述被调用程序的跟踪数据;所述被调用程序将所述跟踪数据返回给所述调用程序;所述调用程序存储所述跟踪标识符和所述被调用程序的跟踪数据的对应记录。21.一种用于程序跟踪的装置,其特征在于,包括:接收单元,用于接收调用方发送的对应特定程序的调用请求;生成单元,用于根据所述调用请求,生成跟踪标识符;所述跟踪标识符用于标识所述特定程序的本次调用所产生的跟踪数据;跟踪单元,用于执行所述特定程序包括的各级子程序,针对至少一个所述子程序,在所述子程序执行后,生成所述子程序的跟踪数据,并存储所述跟踪标识符和所述子程序的跟踪数据的对应记录;其中,用于存储所述跟踪标识符的存储区域和用于存储所述对应记录的存储区域,是指OSGI和非OSGI的子程序均能够访问的存储区域。22.根据权利要求21所述的用于程序跟踪的装置,其特征在于,所述生成单元包括:获取子单元,用于根据所述调用请求,获取所述调用方的IP地址、所述调用请求的标识符或所述发起所述调用请求的线程标识符或进程标识符,以及所述调用方所属类别的至少一者;生成子单元,用于根据所述调用方的IP地址、所述调用请求的标识符或所述发起所述调用请求的线程标识符或进程标识符、当前系统时间,以及所述调用方所属类别的至少一者,生成所述跟踪标识符。23.根据权利要求21所述的用于程序跟踪的装置,其特征在...

【专利技术属性】
技术研发人员:陈旭东
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1