监控数据链路的方法、装置及计算机可读存储介质

文档序号:135028 发布日期:2021-10-22 浏览:36次 >En<

阅读说明:本技术 监控数据链路的方法、装置及计算机可读存储介质 (Method, apparatus and computer readable storage medium for monitoring data link ) 是由 许千帆 罗启铭 王隆生 于 2020-04-14 设计创作,主要内容包括:一种监控数据链路的方法,所述方法包含步骤:解析源代码以生成所述源代码的抽象语法树;遍历所述抽象语法树,获取关键节点,并根据所述关键节点,进一步获取数据流依赖关系,根据所述数据流依赖关系串接成数据链路;使用拦截器在所述源代码的应用程序编程接口处设计拦截点以及关键指标,并经由所述数据链路图形化及关键指针可视化以监控所述数据链路。本发明还提供一种装置及计算机可读存储介质。本发明能够对源代码的数据链路进行梳理和可视化,帮助开发者理解源代码,提高开发效率。(A method of monitoring a data link, the method comprising the steps of parsing a source code to generate an abstract syntax tree for the source code; traversing the abstract syntax tree to obtain key nodes, further obtaining data stream dependency relations according to the key nodes, and connecting the data stream dependency relations in series to form a data link; designing interception points and key indicators at an application programming interface of the source code using an interceptor, and monitoring the data link via the data link graphical and key pointer visualization. The invention also provides a device and a computer readable storage medium. The invention can comb and visualize the data link of the source code, help the developer understand the source code and improve the development efficiency.)

监控数据链路的方法、装置及计算机可读存储介质

技术领域

本发明是有关于代码分析的技术领域,尤其关于一种监控数据链路的方法、装置及计算机可读存储介质。

背景技术

随着数字化技术在各行各业的广泛应用,电子商务、物流、智能制造、行政管理等各领域的业务对软件系统的依赖与日俱增,各种行业应用、领域软件不断涌现。随着软件的发展,用户对于软件应用的要求也不断提高,包括更好的操作及更佳的用户体验。

然而由于市场、管理、政府政策等诸多内外部因素,使得业务变更频繁,软件需对应进行升级或修改,因此,软件应用开发需要高扩展性、短周期性、易管理性及快响应性。对应用开发者而言,不仅需要完整正确的业务逻辑、在业务复杂之后,还需要有适当的管理能力,才能让应用软件有快速迭代的能力。此外,由于软件公司的人员变动频繁,即使有完整的应用开发文檔或代码注解进行业务交接,对开发来说,业务的复杂性还是会让开发者陷入大量代码的苦恼中。当很多代码都没有相应的开发文檔和代码注解,只能直接阅读代码,将极大地降低开发效率。

发明内容

有鉴于此,本发明的目的在于提供一种监控数据链路的方法、装置及计算机可读存储介质,可以对应用系统的数据流进行梳理和可视化,便于源代码调优和排查错误。

本发明提供一种监控数据链路的方法,所述方法包含以下步骤:解析源代码,生成所述源代码的抽象语法树;遍历所述抽象语法树,获取关键节点;根据所述关键节点,获取数据流依赖关系,并根据所述数据流依赖关系串接成数据链路;在所述源代码的应用程序编程接口处使用拦截器设置拦截点以及关键指标;根据所述数据流依赖关系,图形化所述数据链路;以及根据可视化配置参数,将所述关键指标进行可视化展示。

本发明还提供一种监控数据链路的装置,所述装置包含:处理器;以及存储器,用于存储至少一个计算机程序,其中,所述计算机程序包含由所述处理器执行的指令,使得所述处理器执行以下步骤:解析源代码,生成所述源代码的抽象语法树;遍历所述抽象语法树,获取关键节点;根据所述关键节点,获取数据流依赖关系,并根据所述数据流依赖关系串接成数据链路;在所述源代码的应用程序编程接口处使用拦截器设置拦截点以及关键指标;根据所述数据流依赖关系,图形化所述数据链路;以及根据可视化配置参数,将所述关键指标进行可视化展示。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述监控数据链路的方法的步骤。

相较于现有技术,所述监控数据链路的方法、装置及计算机可读存储介质可用于生成数据链路,并显示数据链路图形化及关键指针可视化,让开发者可以快速了解业务逻辑、便于代码分析和代码监控调适,以便进行应用系统的迭代开发、调优及排错。

附图说明

图1为根据本发明一实施例的监控数据链路的方法流程图。

图2为根据本发明一实施例的监控数据链路的装置的方块图。

主要元件符号说明

具体实施方式

请参阅图1,所示为本发明一实施例中监控数据链路的方法流程图。

步骤S102,解析源代码以生成所述源代码的抽象语法树,其中,所述抽象语法树是一种用来描述源代码语法结构的树形表示方式,将源代码形成类与类之间、类的方法与方法之间以及类的注解、方法的注解的附属关系。

在一实施例中,所述生成抽象语法树的具体处理过程,包括词法分析及语法分析两步骤。

词法分析,用于将源代码的字符流转换为标记(Token)列表。所述标记是程序语言中的最小元素,包括关键词、变量名、字面量及运算符等等。具体地,可读取源代码的字符串,按照默认规则合并成标记,以形成标记列表。

语法分析,用于根据标记列表以及程序语言的语法定义进行语意分析,按照程序语言的语法结构生成源代码对应的抽象语法树,其中,抽象语法树中的每一个节点都对应源代码中的一个语法结构,例如,类型、修饰符、运算符等等。

在一实施例中,还可以应用行业代码标准,规范代码命名和文件路径的命名,以在抽象语法树中有效关联数据链路上下游的对应关系,其中,代码命名规范包含类的类名规范、类及方法的注解规范。例如,使用表现层状态转换(RESTful)风格,将“XXXXXController”类作为后台应用的应用程序编程接口(Application ProgrammingInterface,API)之对外接口,类的注解必须包含“@RestController”和@“Api”,其中,“@Api”为关于模块API的描述;“XXXXXController”的方法的注解必须包含“@ApiOperation”。“XXXXXServiceImpl”类作为所有服务交互应用程序编程接口的命名规范,类的注解必须包含“@Service”。将“XXXXXRepository”类作为存取数据库应用程序编程接口的命名规范,类的注解必须包含“@Query”。将“XXXXXEntity”类作为数据库映像实体应用程序编程接口的命名规范,类的注解必须包含“@Data”、“@Entity”、“@Table”;各个字段的注解必须包含“@Column”。在一实施例中,“XXXXX”可为软件的名称或该源代码的统一命名。

步骤S104,遍历所述抽象语法树,获取类、方法及注解等关键节点。在一实施例中,可以将收集到的关键节点存储为列表,也可依节点的类型不同,分别存储为类的关键节点列表、方法的关键节点列表及注解的关键节点列表,其中,所述列表可包含索引值,用于将类及类的方法相互对应。

步骤S106,根据收集到的关键节点,获取数据流依赖关系,完成数据链路的串接。具体地,根据所述类名规范中的所有类名,依次遍历所述类的关键节点列表,找到所有类的类名符合类名规范者,再由查找到的类的关键节点,遍历所述方法的关键节点列表,找到所有对应于该类的方法关键节点,藉此梳理所有关键节点间的数据流依赖关系,串接成数据链路。例如,首先查找类名为“Controller”的所有类、找出该些类对应的所有类的方法,并依此方式逐次查找类名为“ServiceImpl”、“Repository”以及“Repository”的所有类及对应的类的方法。

步骤S108,使用拦截器在应用程序编程接口处设置拦截点拦截API呼叫,并设置欲监控的关键指标;计算并更新所述关键指标。在一实施例中,所述关键指标包含各个拦截点的名称、输入参数、输出结果、处理完成运行时间以及执行次数等。在一实施例中,可以将所述拦截器的拦截点所拦截到的相关信息及关键指标存储到实时或脱机的数据库,例如Kylin、HBase、Druid或Redis数据库等。

具体地,为了可以动态地对代码进行监控和调试,在一例中,可以使用Springboot框架中面向切面编程(Aspect Oriented Programming,AOP)的特性,实现拦截功能。使用AOP的拦截器,不会破坏原来程序逻辑,可以很好地对业务逻辑的各个部份进行隔离,从而使得业务逻辑各部分之间的耦合度降低。

举例来说,可以在以下三个应用程序编程接口处设置拦截点:后台应用的应用程序编程接口之对外接口(XXXXXController)处、所有服务交互的应用程序编程接口(XXXXXServiceImpl)处、存取数据库的应用程序编程接口(XXXXXRepository)处。拦截器主要拦截各个拦截点的名称,记录当前请求的呼叫者、当前呼叫参数、当前请求的呼叫时间、当前请求的返回结果、当前请求的结束时间、当前请求的总体耗时,并据以计算以及更新所述关键指标中的各个拦截点的名称、输入参数、输出结果、处理完成运行时间以及执行次数。

步骤S110,将数据流依赖关系图形化,形成数据链路关系图,并将关键指标可视化。在一实施例中,首先,定义数据链路中每一个节点的关系结构为{本身节点,前置节点,后续节点},其中,前置节点用以表示数据的来源以及后续节点用以表示数据的去向,接着,根据步骤S106中获取的数据流依赖关系,将数据链路图形化。具体地,可以使用Canvas(HTML元素)进行图形绘制,经由网页页面加载数据链路及数据依赖关系,直接在网页页面画出数据依赖关系图。在另一实施例中,还可以将数据链路中的各个关键节点,根据步骤S106中获取的数据流依赖关系构建有向边,并据以构建用于描述所述数据依赖关系的有向图。在一实施例中,可以按照用户需求进行关键指针的可视化展示。例如,为了数据的实时性和效率性,可以采用websocket技术,获取在步骤S108中数据库存储的实时更新数据,根据可视化配置参数,将关键指标进行可视化展示。其中,所述可视化配置参数包含图表维度设定、广告牌配置以及报表设定等。在一实施例中,所述可视化配置参数可以是默认值或也可以经由用户设定。

经由数据流依赖关系图形化及关键指针可视化,可以实时显示各个请求呼叫的接口、所涉及的数据链路、数据流方向;还可以监控数据链路上各个节点的输入参数、输出结果,快速排查在各个应用程序环节上执行结果是否正确;以及根据各个节点的处理完成运行时间,可以清楚且快速地分析源代码在各个应用环节的处理效率,为源代码调优提供准确定位;最后,执行次数可以用于实时统计各接口在运行时的实时访问用量。

请参阅图2,所示为本发明一实施例中装置200的方块图。所述装置200可用于执行如图1所示的监控数据链路的方法。所述装置200包含处理器202以及存储器204。所述处理器202电性连接所述存储器204。所述处理器202可以是微控制器、微处理器或其他具有运算处理能力的电路,被配置为执行或处理存储在所述存储器204中的指令、数据以及计算机程序。所述存储器204包含只读存储器(ROM)、随机存取内存(RAM)、磁盘存储介质装置、光存储介质装置、闪存装置、电气、光学或其他物理/有形(例如,非暂时性)等计算机可读存储介质,用于存储控制所述装置200运行的一个或多个计算机程序,并且由所述处理器202执行。在本实施例中,所述存储器204存储或编码有计算机程序,用于供所述处理器202执行如图1所示的监控数据链路的方法。所述装置200可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器202和一个或多个存储器204。在另一实施例中,所述装置200还可以包含有线或无线网络接口、键盘以及输入输出装置,所述装置200还可以包括其他用于实现装置功能的组件。

在一实施例中,还可以使用一种计算机可读存储介质,用于存储计算机程序,所述程序被例如处理器执行时可以实现上述任意一个实施例中所述监控数据链路方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行所述监控数据链路方法部分中描述的根据本发明各种示例性实施方式的步骤。

总结来说,本发明的监控数据链路的方法、装置及计算机可读存储介质可以对应用系统的数据流进行梳理和可视化,在生成数据链路的同时,可以根据关键指标统计源代码的使用情况和使用效率,便于源代码调优和排查错误,相较于传统收集错误日志和分析完整代码进行调优,本发明有着实时、快速、清晰的优势。

值得注意的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

7页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于软件基因的抗混淆二进制代码克隆检测方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!