CN117453280B - 一种代码拓扑和业务拓扑生成方法、装置、设备及介质 - Google Patents
一种代码拓扑和业务拓扑生成方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117453280B CN117453280B CN202311171305.4A CN202311171305A CN117453280B CN 117453280 B CN117453280 B CN 117453280B CN 202311171305 A CN202311171305 A CN 202311171305A CN 117453280 B CN117453280 B CN 117453280B
- Authority
- CN
- China
- Prior art keywords
- code
- service
- information
- target
- topological relation
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 156
- 238000010586 diagram Methods 0.000 claims abstract description 97
- 230000006870 function Effects 0.000 claims abstract description 88
- 230000003068 static effect Effects 0.000 claims abstract description 88
- 238000001914 filtration Methods 0.000 claims description 42
- 238000012545 processing Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012360 testing method Methods 0.000 claims description 13
- 238000012856 packing Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 description 10
- 239000013589 supplement Substances 0.000 description 9
- 241000233805 Phoenix Species 0.000 description 8
- 238000009960 carding Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 235000019580 granularity Nutrition 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种代码拓扑和业务拓扑生成方法、装置、设备及介质,涉及微服务技术领域,包括:获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据;基于静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图;控制预设分布式链路跟踪系统采集业务系统的链路信息,利用链路信息对初始代码拓扑关系图以及初始业务关系拓扑图进行更新,以获取与目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。通过静态代码数据与链路信息共同生成完整目标代码拓扑关系图和目标业务关系拓扑图。
Description
技术领域
本发明涉及微服务技术领域,特别涉及一种代码拓扑和业务拓扑生成方法、装置、设备及介质。
背景技术
随着公司业务不断变化,业务核心系统也变得越来越复杂。特别是微服务理念被广大公司所接受后,服务被划分得越来越细粒度化。目前所知很多大公司的业务系统应用服务就有100多种,包括客户管理、计费、核算、费控、订单等等。面对如此复杂的业务系统,没有一个人或者一份文档能够将所有的业务与业务之间关系梳理清晰,更不用说代码与代码之间的关系了。这将导致业务人员在做需求分析时无法知道业务变更是否会对其他业务产生影响,同样开发人员和测试人员也无法知道变更的代码是否影响其他的功能,这可能产生系统故障风险。现有技术中普遍选择的做法就是在业务系统版本发布之前跑一次全量回归测试来保证核心业务功能不会出错。但是如果在回归测试中才发现问题,可能产生巨大的影响,浪费人力与物力。
综上,如何实现对不同业务系统的业务与业务之间的关系梳理,代码与代码之间的关系梳理,将业务关系、代码关系通过页面展示,帮助客户找到因业务变更或代码变更所产生影响,进而能够针对此影响范围进行重点测试,从而提高系统的可靠性,减少故障的发生是本领域有待解决的技术问题。
发明内容
有鉴于此,本发明的目的在于提供一种代码拓扑和业务拓扑生成方法、装置、设备及介质,能够实现对不同业务系统的业务与业务之间的关系梳理,代码与代码之间的关系梳理,将业务关系、代码关系通过页面展示,帮助客户找到因业务变更或代码变更所产生影响,进而能够针对此影响范围进行重点测试,从而提高系统的可靠性,减少故障的发生。其具体方案如下:
第一方面,本申请公开了种代码拓扑关系和业务拓扑关系生成方法,应用于服务端,包括:
获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据;
基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图;
控制预设分布式链路跟踪系统采集所述业务系统的链路信息,利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。
可选的,所述获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据,包括:
通过客户端从预设打包文件中提取所述业务系统的版本信息,以得到目标版本信息;所述客户端基于所述目标版本信息确定目标字节码,以便利用字节码处理工具对所述目标字节码进行解析,以获取静态代码数据;
获取所述客户端通过消息队列发送的所述静态代码数据和所述目标版本信息。
可选的,所述利用字节码处理工具对所述目标字节码进行解析,以获取静态代码数据,包括:
利用字节码处理工具读取所述目标字节码中的类信息;其中,所述类信息包括:类名称、类全限定名称、类的注解信息、类继承信息、类接口信息;
基于预设配置信息对所述类信息进行匹配并过滤,以得到过滤后的满足类全限定名称对应的目标路径下的过滤后目标字节码;
利用字节码处理工具对所述过滤后目标字节码进行解析,以获取所述过滤后目标字节码中的方法代码;其中,所述方法代码包括:方法名称信息、方法注解信息、参数类型信息、返回值信息;
判断所述方法代码是否存在业务功能注解标签;
若存在,则将携带对应的业务功能标签的所述方法代码记录为静态代码。
可选的,所述获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据之前,还包括:
对业务系统中业务逻辑的入口方法代码添加对应的业务功能注解标签,以关联所述入口方法代码和对应的业务功能,并获取携带业务功能标签的入口方法代码;
将所述携带业务功能标签的入口方法代码打包生成目标字节码,并将所述目标字节码与所述业务系统的当前版本信息打包压缩生成预设打包文件。
可选的,所述基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图,包括:
将所述静态代码中应用信息、功能信息、标签信息、类信息、方法信息作为节点;
将所述静态代码中应用数据与功能关系、功能与标签关系、版本信息与类关系、类与方法关系、标签与方法关系、方法与方法的代码调用关系作为边,将所述节点和所述边存储至预设图数据库中,然后基于所述节点和所述边分别建立初始代码拓扑关系图以及初始业务关系拓扑图。
可选的,所述控制预设分布式链路跟踪系统采集所述业务系统的链路信息,包括:
通过预设分布式链路跟踪系统对执行全量回归测试的所述业务系统进行链路信息采集,以获取相应的链路信息,以便所述预设分布式链路跟踪系统定时通过预设接口发送所述链路数据至所述服务端。
可选的,所述利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图,包括:
从所述链路数据中提取目标接口信息、目标类信息、目标方法信息、目标方法调用信息,以得到动态链路信息,并将所述动态链路信息存储至预设图数据库;
基于所述预设图数据库中的所述动态链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。
第二方面,本申请公开了一种代码拓扑关系和业务拓扑关系生成装置,应用于服务端,包括:
代码获取模块,用于获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据;
第一拓扑图生成模块,用于基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图;
第二拓扑图生成模块,用于控制预设分布式链路跟踪系统采集所述业务系统的链路信息,利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的代码拓扑关系和业务拓扑关系生成方法的步骤。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的代码拓扑关系和业务拓扑关系生成方法的步骤。
由此可见,本申请公开了一种代码拓扑关系和业务拓扑关系生成方法,应用于服务端,包括:获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据;基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图;控制预设分布式链路跟踪系统采集所述业务系统的链路信息,利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。可见,服务端通过获取客户端解析业务系统的目标字节码,获取该业务系统的静态代码数据,然后基于静态代码数据中携带业务功能标签之间的代码调用关系以及业务之间的调用关系分别建立初始代码拓扑关系图和初始业务关系拓扑图,然后利用通过预设分布式链路跟踪系统采集的业务系统的链路信息对初始代码拓扑关系图和初始业务关系拓扑图分别进行补充,这样一来,通过链路信息补充了业务系统中代码中存在分布式调用、消息队列或者使用反射的方式进行方法调用等初始代码拓扑关系图和初始业务关系拓扑图无法展示的信息,进而生成完整的目标代码拓扑关系图和目标业务关系拓扑图。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种代码拓扑关系和业务拓扑关系生成方法流程图;
图2为本申请公开的一种服务端、客户端、链路系统连接示意图;
图3为本申请公开的一种具体的代码拓扑关系和业务拓扑关系生成方法流程图;
图4为本申请公开的一种服务端、客户端、链路系统进行代码拓扑关系和业务拓扑关系生成方法流程图;
图5为本申请公开的一种代码拓扑关系和业务拓扑关系生成装置结构示意图;
图6为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着公司业务不断变化,业务核心系统也变得越来越复杂。特别是微服务理念被广大公司所接受后,服务被划分得越来越细粒度化。目前所知很多大公司的业务系统应用服务就有100多种,包括客户管理、计费、核算、费控、订单等等。面对如此复杂的业务系统,没有一个人或者一份文档能够将所有的业务与业务之间关系梳理清晰,更不用说代码与代码之间的关系了。这将导致业务人员在做需求分析时无法知道业务变更是否会对其他业务产生影响,同样开发人员和测试人员也无法知道变更的代码是否影响其他的功能,这可能产生系统故障风险。现有技术中普遍选择的做法就是在业务系统版本发布之前跑一次全量回归测试来保证核心业务功能不会出错。但是如果在回归测试中才发现问题,可能产生巨大的影响,浪费人力与物力。
为此,本申请提供了一种代码拓扑和业务拓扑生成方案,能够实现对不同业务系统的业务与业务之间的关系梳理,代码与代码之间的关系梳理,将业务关系、代码关系通过页面展示,帮助客户找到因业务变更或代码变更所产生影响,进而能够针对此影响范围进行重点测试,从而提高系统的可靠性,减少故障的发生。
参照图1所示,本发明实施例公开了一种代码拓扑关系和业务拓扑关系生成方法,应用于服务端,包括:
步骤S11:获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据。
本实施例中,通过客户端对各业务系统的静态代码数据进行采集,其中,该静态代码数据中包含着不同的携带业务功能标签的静态代码,这些携带着业务功能标签的静态代码能够将代码与业务功能连接起来,进而能够分别生成初始代码关系拓扑图和初始业务关系拓扑图。当客户端采集并解析获取到静态代码数据后,将该静态代码数据发送至服务端进行后续处理。
本实施例中,通过客户端从预设打包文件中提取所述业务系统的版本信息,以得到目标版本信息;所述客户端基于所述目标版本信息确定目标字节码,以便利用字节码处理工具对所述目标字节码进行解析,以获取静态代码数据;获取所述客户端通过消息队列发送的所述静态代码数据和所述目标版本信息。可以理解的是,客户端从预设打包文件中提取业务系统的版本信息,需要注意的是,由于在构建业务关系拓扑图和代码关系拓扑图时,需要有对应的业务系统的版本信息进行对应,因为不同版本的业务系统的业务关系拓扑图、代码关系拓扑图是区别很大的,因此,首先从JAR(Java Archive,Java计算机文件格式;Java,即Java programming language,面向对象编程语言)打包文件中获取当前业务系统的版本信息,JAR打包文件是一种压缩文件,其中包含了业务系统的所有字节码文件、图像、音频等资源文件,以及一个描述JAR文件元数据信息的MANIFEST.MF文件,其中,所述版本信息即打包在MANIFEST.MF文件中。当从MANIFEST.MF文件中获取到业务系统的版本信息为version=2.2.1时,将2.2.1作为当前业务系统的目标版本信息,获取到目标版本信息后方便将代码关系拓扑图和代码版本信息关联。业务系统通过代理程序,如:-javaagent:。当客户端程序.jar参数启动后,首先加载客户端程序,其具体操作步骤如下所示:客户端程序首先读取config(配置)目录下的配置文件,获取消息队列地址、字节码过滤方式与过滤条件;然后客户端程序从JAR打包文件中的MANIFEST.MD文件中提取当前业务系统的版本信息作为目标版本信息,例如:2.2.1;再通过JVMTI(Java Virtual Machine Tool Interface,Java虚拟机工具接口)提供的接口对所有准备加载到元空间的字节码进行拦截,获取当前业务系统的目标字节码,并通过ASM(Abstract Syntax Tree,抽象语法树)工具对目标字节码进行解析,获取静态代码数据。然后将获取到的静态代码数据通过消息队列传送给服务端。
本实施例中,利用字节码处理工具读取所述目标字节码中的类信息;其中,所述类信息包括:类名称、类全限定名称、类的注解信息、类继承信息、类接口信息;基于预设配置信息对所述类信息进行匹配并过滤,以得到过滤后的满足类全限定名称对应的目标路径下的过滤后目标字节码;利用字节码处理工具对所述过滤后目标字节码进行解析,以获取所述过滤后目标字节码中的方法代码;其中,所述方法代码包括:方法名称信息、方法注解信息、参数类型信息、返回值信息;判断所述方法代码是否存在业务功能注解标签;若存在,则将携带对应的业务功能标签的所述方法代码记录为静态代码。可以理解的是,通过字节码处理工具读取类名称、类全限定名称、类的注解信息、类继承信息、类接口信息等类信息。然后进一步读取该类的内部类信息,所述内部类信息具体包括:内部类名称、内部类的注解信息、内部类的继承信息、内部类接口信息等。然后通过预设配置信息对上述读取的类信息以及内部类信息进行匹配过滤,以获取过滤后目标字节码的类信息和内部类的所有方法代码。其中,所述预设配置信息为预先该当前业务系统所在服务器的config目录下提供的包含上报数据的消息队列地址、字节码过滤方式与过滤条件等信息的配置文件中的过滤信息。判断方法代码是否存在业务功能注解标签;若存在,则将携带对应的业务功能标签的所述方法代码记录为静态代码。
ASM工具解析目标字节码的步骤具体为:
a)通过ASM工具读取目标字节码中的类信息,包括类名称、类全限定名称、类的注解信息、类继承信息、类接口信息等。例如:PhoenixBatchAutoConfiguration类的全限定名称为com.hncy58.phoenix.batch.PhoenixBatchAutoConfiguration,拥有@AutoConfiguration注解,未继承类,未实现接口;
b)根据读取的配置信息对目标字节码进行过滤,例如:过滤方式为“通配符过滤”过滤条件为“com.hncy58.*.*Configuration”,或过滤方式为“前缀过滤”过滤条件为“com.hncy58”,只要类全限定名称匹配过滤条件,那么继续对目标字节码进行后续步骤,否则丢弃之前的分析数据。需要注意的是,过滤的对象只对业务类进行分析,排除第三方JAR中的类;
c)通过ASM工具读取内部类信息,包括内部类的名称、内部类上的注解信息、内部类的继承信息、内部类的接口信息等;
d)通过ASM工具进行解析,读取类和内部类所有方法信息,包括方法名称、方法注解、参数类型、返回值等,如果方法信息中存在@BusinessLabel注解,则解析此注解来获取应用、模块、标签等数据;
e)通过AMS工具解析类方法中的调用信息,主要采集invokespecial、invokevirtual、invokestatic、invokeinterface指令,即方法调用数据。例如:“INVOKEVIRTUAL com/hncy58/phoenix/security/dto/AuthUserDetails.getUsername()Ljava/lang/Strin g”,表示当前类的方法中调用了AuthUserDetails类的getUserName方法。然后再通过配置文件中配置的过滤方式和过滤条件对被调方法的类进行过滤,即对com.hncy58.phoenix.security.dto.AuthUserDetails类进行过滤匹配,如果符合匹配条件则记录调用关系,否则丢弃调用关系。需要注意的是,这里只记录调用其他业务类的方法,排除第三方JAR中的类方法的调用。
本实施例中,获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据之前,还包括:对业务系统中业务逻辑的入口方法代码添加对应的业务功能注解标签,以关联所述入口方法代码和对应的业务功能,并获取携带业务功能标签的入口方法代码;将所述携带业务功能标签的入口方法代码打包生成目标字节码,并将所述目标字节码与所述业务系统的当前版本信息打包压缩生成预设打包文件。可以理解的是,在客户端对业务系统的目标代码解析之前,业务系统自身需要进行处理,具体的:
1、在一些业务逻辑的入口方法上添加@BusinessLabel注解,将业务信息与代码进行关联,例如:在日中对账业务的入口方法上添加@BusinessLabel(app=ccs,module=gl,label=reconcile),app=css表示代码所属账务系统,module=gl表示代码所属会计核算模块,label=reconcile表示代码的业务标签为对账功能;
2、在业务系统打包时需要将业务系统的版本信息打包到JAR中的MANIFEST.MF文件中,即MANIFEST.MF文件中带有version=2.2.1,这样才能将代码拓扑图和代码版本相关联;
3、需要在业务系统所在服务器的config目录下提供额外的配置文件,将在业务系统启动时由客户端程序进行读取。配置文件中配置了上报数据的消息队列地址、字节码过滤方式与过滤条件等信息。
4、业务系统启动时,需要通过javaagent将客户端程序注入到业务系统的JVM中,这样客户端程序能够采集版本信息并且在JVM启动时能够对业务系统字节码进行分析,从而获取代码之间的关系。
步骤S12:基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图。
本实施例中,将所述静态代码中应用信息、功能信息、标签信息、类信息、方法信息作为节点;将所述静态代码中应用数据与功能关系、功能与标签关系、版本信息与类关系、类与方法关系、标签与方法关系、方法与方法的代码调用关系作为边,将所述节点和所述边存储至预设图数据库中,然后基于所述节点和所述边分别建立初始代码拓扑关系图以及初始业务关系拓扑图。可以理解的是,服务端接收到解析后的字节码数据后,也即接收到静态代码数据后,根据应用数据、功能数据、标签数据、类数据、方法数据作为节点,应用与功能关系、功能与标签关系、版本与类关系、类与方法关系、标签与方法关系、方法与方法调用关系作为边,存入图数据库中,以分别建立初始业务关系拓扑图、初始代码关系拓扑图。
步骤S13:控制预设分布式链路跟踪系统采集所述业务系统的链路信息,利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。
本实施例中,由于上述的静态代码只是通过静态代码分析建立的关系数据,如果代码中存在分布式调用、消息队列或者使用反射的方式进行方法调用,那么将无法建立代码之间调用关系。此时就需要动态链路数据来补充关联关系。具体的,通过预设分布式链路跟踪系统采集当前业务系统的链路信息,所述预设分布式链路跟踪系统具体可以包括但不限于:Skywalking、pinpoint。然后分布式链路跟踪系统对采集到的链路信息作为动态链路数据定时发送至服务端,服务端能够获取动态链路数据对初始代码拓扑关系图以及所述初始业务关系拓扑图进行补充更新,将静态分析数据与动态分析数据进行互补,生成完整的拓扑数据,以更新后得到目标代码拓扑关系图以及目标业务关系拓扑图。可见通过在关键的业务代码打上业务功能标签,将代码与业务功能进行关联。再通过静态代码分析并结合动态链路数据来生成完整的代码拓扑图,从而也生成了完整的业务拓扑图。
参照图2所示,提供了一种服务端、客户端、链路系统连接示意图,具体的,本方案提供了客户端、服务端两个应用,客户端:采集业务系统静态代码数据,并将数据传输给服务端;服务端:能够接收客户端上报的数据和从链路服务上提取链路数据,加以分析,提供代码、业务关系拓扑图给用户进行查询、浏览。其中,客户端分别与服务端各自连接,以便服务端采集各客户端所在的业务系统的静态代码数据;链路系统与服务端连接,用于向服务端发送采集的各业务系统的动态链路数据,服务端与显示设备连接,用于将自身生成的目标业务关系拓扑图和目标代码关系拓扑图发送至显示模块进行显示;所述显示设备具体可以为显示屏、荧幕等。
由此可见,本申请公开了一种代码拓扑关系和业务拓扑关系生成方法,应用于服务端,包括:获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据;基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图;控制预设分布式链路跟踪系统采集所述业务系统的链路信息,利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。可见,服务端通过获取客户端解析业务系统的目标字节码,获取该业务系统的静态代码数据,然后基于静态代码数据中携带业务功能标签之间的代码调用关系以及业务之间的调用关系分别建立初始代码拓扑关系图和初始业务关系拓扑图,然后利用通过预设分布式链路跟踪系统采集的业务系统的链路信息对初始代码拓扑关系图和初始业务关系拓扑图分别进行补充,这样一来,通过链路信息补充了业务系统中代码中存在分布式调用、消息队列或者使用反射的方式进行方法调用等初始代码拓扑关系图和初始业务关系拓扑图无法展示的信息,进而生成完整的目标代码拓扑关系图和目标业务关系拓扑图。
参照图3所示,本发明实施例公开了一种具体的代码拓扑关系和业务拓扑关系生成方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
步骤S21:获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据。
步骤S22:基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图。
其中,步骤S21、S22中更加详细的处理过程,请参照前述公开的实施例内容,在此不再进行赘述。
步骤S23:通过预设分布式链路跟踪系统对执行全量回归测试的所述业务系统进行链路信息采集,以获取相应的链路信息,以便所述预设分布式链路跟踪系统定时通过预设接口发送所述链路数据至所述服务端。
本实施例中,当业务系统发布后,需要第三方系统对业务系统链路进行采集;其中,所述第三方系统即为预设分布式链路跟踪系统。具体的采集过程为:在发布的业务系统中运行全量的回归测试用例,通过可观测性链路系统的接口,以便服务端定时从第三方系统获取链路数据。
步骤S24:从所述链路数据中提取目标接口信息、目标类信息、目标方法信息、目标方法调用信息,以得到动态链路信息,并将所述动态链路信息存储至预设图数据库;基于所述预设图数据库中的所述动态链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。
本实施例中,服务端将获取到的链路数据进行整理从中提取接口信息、类信息、方法信息、方法调用信息,其中,方法调用通过配置条件进行过滤,只保留com.hncy58包路径下的类方法调用,最终将上述提取的动态链路数据存入图数据库中,补充类与类、类与方法、接口与方法、方法与方法之间的关联关系。需要注意的是,在存储至图数据库之前,需要与之前存储的静态代码数据中方法与方法之间关联关系等重复的数据剔除,减少图数据库中出现的冗余数据。
本实施例中,当通过Skywalking对业务系统进行链路数据采集时,可以通过以下方式获取链路数据:服务发现:Skywalking可以通过服务发现机制来发现业务系统的节点,并获取它们之间的链路数据;跟踪数据:Skywalking可以通过跟踪数据来获取业务系统的链路数据。跟踪数据包括业务系统的调用关系、延迟、异常等信息。当Skywalking获取到当前业务系统的链路数据后,Skywalking可以通过可视化界面、告警等方式帮助您分析和监控业务系统的性能和运行情况。
参照图4所示,公开了服务端、客户端、链路系统进行代码拓扑关系和业务拓扑关系生成方法,包括:业务系统的代码与业务关联处理、业务系统中客户端对业务系统的目标字节码处理、服务端对静态代码数据的处理、链路系统对业务系统的动态链路数据的收集等,其中各个步骤具体包括:
一、业务系统的步骤
1、在一些业务逻辑的入口方法上添加@BusinessLabel注解,将业务信息与代码进行关联,例如:在日中对账业务的入口方法上添加@BusinessLabel(app=ccs,module=gl,label=reconcile),app=css表示代码所属账务系统,module=gl表示代码所属会计核算模块,label=reconcile表示代码的业务标签为对账功能;
2、在业务系统打包时需要将业务系统的版本信息打包到JAR中的MANIFEST.MF文件中,即MANIFEST.MF文件中带有version=2.2.1,这样才能将代码拓扑图和代码版本相关联;
3、在业务系统所在服务器的config目录下提供额外的配置文件,将在业务系统启动时由客户端程序进行读取。配置文件中配置了上报数据的消息队列地址、字节码过滤方式与过滤条件等信息。
4、业务系统启动时,需要通过javaagent将客户端程序注入到业务系统的JVM中,以便客户端程序能够采集版本信息并且在JVM启动时能够对业务系统字节码进行分析,从而获取代码之间的关系。
二、客户端步骤
业务系统通过带有-javaagent:客户端程序.jar参数启动后,首先加载客户端程序,其具体操作步骤如下所示:
1、客户端程序首先读取config目录下的配置文件,获取消息队列地址、字节码过滤方式与过滤条件;
2、然后客户端程序从业务包中的MANIFEST.MD文件中提取当前业务系统的版本信息,例如2.2.1;
3、再通过JVMTI提供的接口对所有准备加载到元空间的字节码进行拦截,并通过ASM工具对字节码进行解析,具体解析步骤如下:
通过ASM工具读取字节码中的类信息,其中包括类名称、类全限定名称、类的注解信息、类继承信息、类接口信息等等,例如PhoenixBatchAutoConfiguration类的全限定名称为com.hncy58.phoenix.batch.PhoenixBatchAutoConfiguration,拥有@AutoConfiguration注解,未继承类,未实现接口;
然后根据读取的配置信息对字节码中进行过滤,例如过滤方式为“通配符过滤”过滤条件为“com.hncy58.*.*Configuration”或者过滤方式为“前缀过滤”过滤条件为“com.hncy58”,只要类全限定名称匹配过滤条件,那么继续对字节码进行后续步骤,否则丢弃之前的分析数据(这里只对业务类进行分析,排除第三方JAR中的类);
通过ASM工具读取内部类信息,包括内部类的名称、内部类上的注解信息、内部类的继承信息、内部类的接口信息等;
通过ASM工具进行解析,读取类和内部类所有方法信息,包括方法名称、方法注解、参数类型、返回值等,如果方法存在@BusinessLabel注解,则解析此注解来获取应用、模块、标签等数据;
通过AMS工具解析类方法中的调用信息,采集invokespecial、invokevirtual、invokestatic、invokeinterface指令,即方法调用数据。例如“INVOKEVIRTUALcom/hncy58/phoenix/security/dto/AuthUserDetails.getUser name()Ljava/lang/String”,表示当前类的方法中调用了AuthUserDetails类的getUserName方法。然后再通过配置文件中配置的过滤方式和过滤条件对被调方法的类进行过滤,即对com.hncy58.phoenix.security.dto.AuthUserDetails类进行过滤匹配,如果符合匹配条件则记录调用关系,否则丢弃调用关系(这里只记录调用其他业务类的方法,排除第三方JAR中的类方法的调用);
4、最终客户端将业务系统版本信息,字节码的类信息、方法信息、方法调用信息等数据通过消息队列传送给服务端系统。
三、服务端系统步骤
1、服务端接收到解析后的字节码数据后,根据应用数据、模块数据、标签数据、类数据、方法数据作为节点,应用与模块关系、模块与标签关系、版本与类关系、类与方法关系、标签与方法关系、方法与方法调用关系作为边,存入图数据库中,建立业务、代码拓扑图;
2、因为上述数据只是通过静态代码分析建立的关系数据,如果代码中存在分布式调用、消息队列或者使用反射的方式进行方法调用,那么将无法建立代码之间调用关系。此时就需要动态链路数据来补充关联关系,具体步骤如下:
业务系统发布后,需要第三方系统对业务系统链路进行采集,例如Skywalking、pinpoint等;
在发布的业务系统中运行全量的回归测试用例,通过可观测性链路系统的接口,服务端定时从第三方系统获取链路数据;
将获取到的链路数据进行整理从中提取接口信息、类信息、方法信息、方法调用信息,其中方法调用通过配置进行过滤,只保留com.hncy58包路径下的类方法调用,最终将上述提取的数据存入图数据库中,补充类与类、类与方法、接口与方法、方法与方法之间的关联关系,其中,重复的数据将会被剔除。
本实施例中,通过帮助客户梳理公司资产,例如:业务系统、代码、业务等,并提供代码拓扑图和业务拓扑图,从而帮助客户找到因业务变更或代码变更所产生影响,能够针对此影响范围进行重点测试,从而提高系统的可靠性,减少故障的发生。同样,系统也能提供的业务调用关系,帮助新入职的员工梳理现在已有业务,减少学习成本。还能帮助开发删除冗余代码,例如拓扑图中出现代码孤岛情况,表示代码未被任何外部调用,可以通过分析进一步判断是否死区代码,进而可以帮助删除冗余代码。
由此可见,通过本方法无需人工介入,只要业务应用启动即可自动采集、自动分析、自动维护关系拓扑图;采集了业务系统版本信息,将版本与代码、版本与业务建立关系,可以查看老版本的代码、业务关系拓扑图,同时也能通过对版本与版本之间的业务关系分析,可以查看业务历史变迁。将代码与业务进行关联结合,能够通过变更的代码找到受影响的业务功能,同样也能通过变更的业务找到受影响的代码。并且由于在图数据库中建立了当前已发布版本的代码、业务关系拓扑图,能够提供图数据库语法对数据进行过滤查询,因此就能够针对下个版本的需求、代码改造提供相应服务。
参照图5所示,本发明实施例还相应公开了一种代码拓扑关系和业务拓扑关系生成装置,应用于服务端,包括:
代码获取模块11,用于获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据;
第一拓扑图生成模块12,用于基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图;
第二拓扑图生成模块13,用于控制预设分布式链路跟踪系统采集所述业务系统的链路信息,利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。
由此可见,本申请公开了获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据;基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图;控制预设分布式链路跟踪系统采集所述业务系统的链路信息,利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。可见,服务端通过获取客户端解析业务系统的目标字节码,获取该业务系统的静态代码数据,然后基于静态代码数据中携带业务功能标签之间的代码调用关系以及业务之间的调用关系分别建立初始代码拓扑关系图和初始业务关系拓扑图,然后利用通过预设分布式链路跟踪系统采集的业务系统的链路信息对初始代码拓扑关系图和初始业务关系拓扑图分别进行补充,这样一来,通过链路信息补充了业务系统中代码中存在分布式调用、消息队列或者使用反射的方式进行方法调用等初始代码拓扑关系图和初始业务关系拓扑图无法展示的信息,进而生成完整的目标代码拓扑关系图和目标业务关系拓扑图。
进一步的,本申请实施例还公开了一种电子设备,图6是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图6为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的代码拓扑和业务拓扑生成方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的代码拓扑和业务拓扑生成方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223除了可以包括电子设备接收到的由外部设备传输进来的数据,也可以包括由自身输入输出接口25采集到的数据等。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的代码拓扑和业务拓扑生成方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器RAM(Random Access Memory)、内存、只读存储器ROM(Read Only Memory)、电可编程EPROM(Electrically Programmable Read Only Memory)、电可擦除可编程EEPROM(ElectricErasable Programmable Read Only Memory)、寄存器、硬盘、可移动磁盘、CD-ROM(CompactDisc-Read Only Memory,紧凑型光盘只读储存器)、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种代码拓扑和业务拓扑生成方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种代码拓扑关系和业务拓扑关系生成方法,其特征在于,应用于服务端,包括:
获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据;
基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图;
控制预设分布式链路跟踪系统采集所述业务系统的链路信息,利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图;
其中,所述获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据,包括:
通过所述客户端从预设打包文件中提取所述业务系统的版本信息,以得到目标版本信息,并利用所述客户端基于所述目标版本信息确定目标字节码,以利用字节码处理工具对所述目标字节码进行解析得到静态代码数据,以及获取所述客户端通过消息队列发送的所述静态代码数据和所述目标版本信息;
并且,所述利用字节码处理工具对所述目标字节码进行解析得到静态代码数据,包括:
利用所述字节码处理工具读取所述目标字节码中的类信息,并基于预设配置信息对所述类信息进行匹配并过滤,以得到过滤后的满足类全限定名称对应的目标路径下的过滤后目标字节码;
利用所述字节码处理工具对所述过滤后目标字节码进行解析,以获取所述过滤后目标字节码中的方法代码,并判断所述方法代码是否存在业务功能标签;
若存在,则将携带对应的业务功能标签的所述方法代码记录为静态代码。
2.根据权利要求1所述的代码拓扑关系和业务拓扑关系生成方法,其特征在于,所述类信息包括:类名称、类全限定名称、类的注解信息、类继承信息、类接口信息;
并且,所述方法代码包括:方法名称信息、方法注解信息、参数类型信息、返回值信息。
3.根据权利要求1所述的代码拓扑关系和业务拓扑关系生成方法,其特征在于,所述获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据之前,还包括:
对业务系统中业务逻辑的入口方法代码添加对应的业务功能标签,以关联所述入口方法代码和对应的业务功能,并获取携带业务功能标签的入口方法代码;
将所述携带业务功能标签的入口方法代码打包生成目标字节码,并将所述目标字节码与所述业务系统的当前版本信息打包压缩生成预设打包文件。
4.根据权利要求1所述的代码拓扑关系和业务拓扑关系生成方法,其特征在于,所述基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图,包括:
将所述静态代码中应用信息、功能信息、标签信息、类信息、方法信息作为节点;
将所述静态代码中应用数据与功能关系、功能与标签关系、版本信息与类关系、类与方法关系、标签与方法关系、方法与方法的代码调用关系作为边,将所述节点和所述边存储至预设图数据库中,然后基于所述节点和所述边分别建立初始代码拓扑关系图以及初始业务关系拓扑图。
5.根据权利要求1所述的代码拓扑关系和业务拓扑关系生成方法,其特征在于,所述控制预设分布式链路跟踪系统采集所述业务系统的链路信息,包括:
通过预设分布式链路跟踪系统对执行全量回归测试的所述业务系统进行链路信息采集,以获取相应的链路信息,以便所述预设分布式链路跟踪系统定时通过预设接口发送所述链路信息至所述服务端。
6.根据权利要求1至5任一项所述的代码拓扑关系和业务拓扑关系生成方法,其特征在于,所述利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图,包括:
从所述链路数据中提取目标接口信息、目标类信息、目标方法信息、目标方法调用信息,以得到动态链路信息,并将所述动态链路信息存储至预设图数据库;
基于所述预设图数据库中的所述动态链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图。
7.一种代码拓扑关系和业务拓扑关系生成装置,其特征在于,应用于服务端,包括:
代码获取模块,用于获取通过客户端解析与目标版本信息对应的业务系统的目标字节码后得到的静态代码数据;
第一拓扑图生成模块,用于基于所述静态代码数据中携带业务功能标签的静态代码之间的代码调用关系以及相应的与所述业务功能标签对应的业务功能之间的业务调用关系建立初始代码拓扑关系图以及初始业务关系拓扑图;
第二拓扑图生成模块,用于控制预设分布式链路跟踪系统采集所述业务系统的链路信息,利用所述链路信息对所述初始代码拓扑关系图以及所述初始业务关系拓扑图进行更新,以获取与所述目标版本信息对应的业务包的目标代码拓扑关系图以及目标业务关系拓扑图;
其中,所述代码获取模块,用于通过所述客户端从预设打包文件中提取所述业务系统的版本信息,以得到目标版本信息,并利用所述客户端基于所述目标版本信息确定目标字节码,以利用字节码处理工具对所述目标字节码进行解析得到静态代码数据,以及获取所述客户端通过消息队列发送的所述静态代码数据和所述目标版本信息;
以及,用于利用所述字节码处理工具读取所述目标字节码中的类信息,并基于预设配置信息对所述类信息进行匹配并过滤,以得到过滤后的满足类全限定名称对应的目标路径下的过滤后目标字节码;利用所述字节码处理工具对所述过滤后目标字节码进行解析,以获取所述过滤后目标字节码中的方法代码,并判断所述方法代码是否存在业务功能标签;若存在,则将携带对应的业务功能标签的所述方法代码记录为静态代码。
8.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至6任一项所述的代码拓扑关系和业务拓扑关系生成方法的步骤。
9.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的代码拓扑关系和业务拓扑关系生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311171305.4A CN117453280B (zh) | 2023-09-12 | 2023-09-12 | 一种代码拓扑和业务拓扑生成方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311171305.4A CN117453280B (zh) | 2023-09-12 | 2023-09-12 | 一种代码拓扑和业务拓扑生成方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117453280A CN117453280A (zh) | 2024-01-26 |
CN117453280B true CN117453280B (zh) | 2024-05-14 |
Family
ID=89582463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311171305.4A Active CN117453280B (zh) | 2023-09-12 | 2023-09-12 | 一种代码拓扑和业务拓扑生成方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453280B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117974911A (zh) * | 2024-04-01 | 2024-05-03 | 广州中望龙腾软件股份有限公司 | 拓扑元素命名方法、装置、存储介质及计算机设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108322351A (zh) * | 2018-03-05 | 2018-07-24 | 北京奇艺世纪科技有限公司 | 生成拓扑图的方法和装置、故障确定方法和装置 |
CN108874470A (zh) * | 2017-05-11 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及服务器、计算机存储介质 |
CN110417574A (zh) * | 2019-05-21 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 一种拓扑分析方法、装置和存储介质 |
CN111459762A (zh) * | 2020-04-03 | 2020-07-28 | 杭州趣维科技有限公司 | 基于字节码技术和cat的监控和调用链系统及方法 |
CN113987074A (zh) * | 2021-10-27 | 2022-01-28 | 中国工商银行股份有限公司 | 分布式服务全链路监控方法、装置、电子设备及存储介质 |
CN114201352A (zh) * | 2021-11-26 | 2022-03-18 | 苏州浪潮智能科技有限公司 | 验证测试方法、系统及存储介质 |
CN115022026A (zh) * | 2022-05-31 | 2022-09-06 | 电子科技大学 | 一种区块链智能合约威胁检测装置及方法 |
CN115292058A (zh) * | 2022-06-28 | 2022-11-04 | 上海淇玥信息技术有限公司 | 一种业务场景级别服务拓扑生成方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9064213B2 (en) * | 2013-02-05 | 2015-06-23 | International Business Machines Corporation | Dynamic model-based analysis of data centers |
-
2023
- 2023-09-12 CN CN202311171305.4A patent/CN117453280B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874470A (zh) * | 2017-05-11 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及服务器、计算机存储介质 |
CN108322351A (zh) * | 2018-03-05 | 2018-07-24 | 北京奇艺世纪科技有限公司 | 生成拓扑图的方法和装置、故障确定方法和装置 |
CN110417574A (zh) * | 2019-05-21 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 一种拓扑分析方法、装置和存储介质 |
CN111459762A (zh) * | 2020-04-03 | 2020-07-28 | 杭州趣维科技有限公司 | 基于字节码技术和cat的监控和调用链系统及方法 |
CN113987074A (zh) * | 2021-10-27 | 2022-01-28 | 中国工商银行股份有限公司 | 分布式服务全链路监控方法、装置、电子设备及存储介质 |
CN114201352A (zh) * | 2021-11-26 | 2022-03-18 | 苏州浪潮智能科技有限公司 | 验证测试方法、系统及存储介质 |
CN115022026A (zh) * | 2022-05-31 | 2022-09-06 | 电子科技大学 | 一种区块链智能合约威胁检测装置及方法 |
CN115292058A (zh) * | 2022-06-28 | 2022-11-04 | 上海淇玥信息技术有限公司 | 一种业务场景级别服务拓扑生成方法、装置及电子设备 |
Non-Patent Citations (5)
Title |
---|
"分布式链路追踪原理详解及SkyWalking、Zipkin介绍";chenchenchen;《百度https://cloud.tencent.com/developer/article/1953242》;20220309;全文 * |
"On Code Analysis Opportunities and Challenges for Enterprise Systems and Microservices";Tomas Cerny等;《IEEE》;20200828;全文 * |
"基于复杂网络理论的Java软件特征分析";司文;《中国优秀硕士学位论文全文数据库 信息科技辑》;20180415;全文 * |
"基于约束求解的静态缺陷检测求精技术研究";吴天爽;《《中国优秀硕士学位论文全文数据库 信息科技辑》》;20160715;全文 * |
基于Web的多模式网络监控系统的设计与实现;靳建彬;秦艺力;张垚;;电子设计工程;20121218(第24期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117453280A (zh) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034993B (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
US7992155B2 (en) | Method and system to correlate and consolidate a plurality of events | |
CN109800207B (zh) | 日志解析方法、装置、设备及计算机可读存储介质 | |
CN112506894A (zh) | 基于链路追踪的服务链日志处理方法、装置和计算机设备 | |
US9600610B2 (en) | Conversion method, program and system of power system data models | |
CN117453280B (zh) | 一种代码拓扑和业务拓扑生成方法、装置、设备及介质 | |
CN113704089B (zh) | 一种全场景的gsm-r接口服务器测试平台系统 | |
CN105227405A (zh) | 监控方法及系统 | |
EP3789882B1 (en) | Automatic configuration of logging infrastructure for software deployments using source code | |
CN109559121A (zh) | 交易路径调用异常分析方法、装置、设备及可读存储介质 | |
CN108228417A (zh) | 车联网日志处理方法及处理装置 | |
US20040205356A1 (en) | Network security data management system and method | |
CN111698109A (zh) | 监控日志的方法和装置 | |
CN115858345A (zh) | 应用服务模块的校验方法、装置、电子设备和存储介质 | |
CN115604343A (zh) | 一种数据传输方法、系统、电子设备和存储介质 | |
CN114756301A (zh) | 日志处理方法、装置和系统 | |
CN114328152A (zh) | 日志记录方法、装置、设备及介质 | |
CN113792008A (zh) | 网络拓扑结构的获取方法、装置、电子设备及存储介质 | |
CN114915566A (zh) | 应用识别方法、装置、设备及计算机可读存储介质 | |
CN112131239A (zh) | 一种数据处理方法、计算机设备以及可读存储介质 | |
US20230281368A1 (en) | Systems and methods for identifying and remediating architecture risk | |
CN109684158A (zh) | 分布式协调系统的状态监控方法、装置、设备及存储介质 | |
CN109167826A (zh) | Web应用的上架方法、装置及系统 | |
CN117312101B (zh) | 结构日志的确定方法及装置、存储介质、电子设备 | |
CN114205276B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |