一种业务链调用解析方法及装置
技术领域
本发明涉及计算机技术领域,更具体的,涉及一种业务链调用解析方法及装置。
背景技术
在系统运行过程中会生成日志数据,记录系统运行的相关数据。若系统中的某个服务或应用存在明显异常,系统会输出异常日志进行报错。
若服务或应用并未明显异常,只是在响应业务请求时出现高耗时,系统是不会输出日志进行报错的,但这些高耗时请求会严重影响用户体验。并且目前根据系统日志无法对高耗时问题进行有效排查,导致高耗时问题无法被及时发现并解决,影响系统性能以及用户体验。
发明内容
有鉴于此,本发明提供了一种业务链调用解析方法及装置,通过解析应用日志监控该业务请求所调用业务链的耗时信息,能及时发现高耗时业务线。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种业务链调用解析方法,包括:
响应于业务请求,调用集成在应用中的拦截器生成所述业务请求的请求标识;
在检测到所述业务请求执行结束的情况下,调用所述拦截器获取所述业务请求所调用的所述应用的标识和耗时信息以及业务链标识,并将所述请求标识、所述应用的标识和耗时信息以及所述业务链标识输出到所述应用的日志中;
从所述应用的日志中提取目标日志,所述目标日志为包括所述请求标识的日志;
对所述目标日志进行解析,得到所述业务请求所调用的所述应用构成的业务链;
按所述请求标识对所述目标日志进行聚合处理,得到所述业务链调用的耗时信息。
可选的,所述调用集成在应用中的拦截器生成所述业务请求的请求标识,包括:
调用所述拦截器获取所述业务请求的调用信息,并利用雪花算法根据所述调用信息生成所述请求标识,所述调用信息包括所述业务请求的方法名、应用标识、URL和时间戳。
可选的,所述调用所述拦截器获取所述业务请求所调用的所述应用的标识和耗时信息,并将所述请求标识、所述应用的标识和耗时信息以及所述业务链标识输出到所述应用的日志中,包括:
调用所述拦截器获取所述业务请求的所述请求标识、所述应用的标识以及所述业务链标识;
根据每个所述应用的请求开始时间和结束时间,计算所述应用的请求耗时;
将所述请求标识、所述应用的标识和所述请求耗时以及所述业务链标识输出到所述应用的日志中。
可选的,所述对所述目标日志进行解析,得到所述业务请求所调用的所述应用构成的业务链,包括:
对所述目标日志进行解析,得到所述业务请求所调用的所有所述应用的标识;
根据时间对所述应用进行排序,得到所述业务链。
可选的,所述按所述请求标识对所述目标日志进行聚合处理,得到所述业务链调用的耗时信息,包括:
在预设时间范围内按所述请求标识对所述目标日志进行聚合处理,得到所述业务链的请求次数、平均耗时和最高耗时。
可选的,所述方法还包括:
在前端按层级将所述业务链中的应用标识、IP地址、接口、方法以及耗时信息进行展示,并将所述业务链的调用关系以图形串联的形式进行展示。
可选的,所述方法还包括:
在所述业务链为正常业务链的情况下,对所述业务链中的应用标识、IP地址、接口以及方法进行可视化图表展示,生成知识图谱。
一种业务链调用解析装置,包括:
业务请求响应单元,用于响应于业务请求,调用集成在应用中的拦截器生成所述业务请求的请求标识;
拦截器调用单元,用于在检测到所述业务请求执行结束的情况下,调用所述拦截器获取所述业务请求所调用的所述应用的标识和耗时信息以及业务链标识,并将所述请求标识、所述应用的标识和耗时信息以及所述业务链标识输出到所述应用的日志中;
目标日志提取单元,用于从所述应用的日志中提取目标日志,所述目标日志为包括所述请求标识的日志;
目标日志解析单元,用于对所述目标日志进行解析,得到所述业务请求所调用的业务线构成的业务链;
聚合处理单元,用于按所述请求标识对所述目标日志进行聚合处理,得到所述所述应用调用的耗时信息。
可选的,所述业务请求响应单元,具体用于:
调用所述拦截器获取所述业务请求的调用信息,并利用雪花算法根据所述调用信息生成所述请求标识,所述调用信息包括所述业务请求的方法名、应用标识、URL和时间戳。
可选的,所述拦截器调用单元,具体用于:
调用所述拦截器获取所述业务请求的所述请求标识、所述应用的标识以及所述业务链标识;
根据每个所述应用的请求开始时间和结束时间,计算所述应用的请求耗时;
将所述请求标识、所述应用的标识和所述请求耗时以及所述业务链标识输出到所述应用的日志中。
可选的,所述目标日志解析单元,具体用于:
对所述目标日志进行解析,得到所述业务请求所调用的所有所述应用的标识;
根据时间对所述应用进行排序,得到所述业务链。
可选的,所述聚合处理单元,具体用于:
在预设时间范围内按所述请求标识对所述目标日志进行聚合处理,得到所述业务链的请求次数、平均耗时和最高耗时。
可选的,所述装置还包括:
交易展示单元,用于在前端按层级将所述业务链中的应用标识、IP地址、接口、方法以及耗时信息进行展示,并将所述业务链的调用关系以图形串联的形式进行展示。
可选的,所述装置还包括:
知识图谱生成单元,用于在所述业务链为正常业务链的情况下,对所述业务链中的应用标识、IP地址、接口以及方法进行可视化图表展示,生成知识图谱。
相对于现有技术,本发明的有益效果如下:
本发明公开的一种业务链调用解析方法,通过在应用中集成拦截器,响应于业务请求,通过调用拦截器输出包括该业务请求的请求标识、所调用应用的标识和耗时信息的应用日志,后续通过解析应用日志监控该业务请求所调用业务链的耗时信息,能及时发现高耗时业务链,便于后续代码优化,从而提高系统性能,提升用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种业务链调用解析方法的流程示意图;
图2为本发明实施例公开的一种业务链调用解析架构图;
图3为本发明实施例公开的一种业务线耗时信息示意图;
图4为本发明实施例公开的一种交互展示界面示意图;
图5为本发明实施例公开的一种知识图谱示意图;
图6为本发明实施例公开的一种业务链调用解析装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种业务链调用解析方法,应用于部署有应用服务的服务器,通过解析应用日志监控业务请求所调用业务链的耗时信息,请参阅图1,该方法具体包括以下步骤:
S101:响应于业务请求,调用集成在应用中的拦截器生成所述业务请求的请求标识;
用户通过APP或者网页发送业务请求,集成在应用中的拦截器生成所述业务请求的请求标识,该拦截器可以为spring拦截器,也可以为dubbo过滤器,可以根据具体系统框架进行选取。
具体的,调用所述拦截器获取所述业务请求的调用信息,所述调用信息包括业务请求的方法名、应用标识、URL和时间戳。
利用雪花算法根据上述调用信息生成请求标识,如利用雪花算法根据上述调用信息中的时间戳生成请求标识,该请求标识为全局唯一标识。
S102:在检测到所述业务请求执行结束的情况下,调用所述拦截器获取所述业务请求所调用的所述应用的标识和耗时信息以及业务链标识,并将所述请求标识、所述应用的标识和所述耗时信息以及所述业务链标识输出到所述应用的日志中;
请参阅图2,业务请求首先被拦截器拦截后,获取业务请求的方法名、应用标识、URL等调用信息,然后业务请求进入dubbo应用后,dubbo过滤器也会将请求的方法名、应用名、URL等调用信息获取出来,业务请求执行结束后,业务请求再次进入拦截器,会将整个业务请求的耗时信息、方法名、应用标识、URL等调用信息输出到所述应用的日志中。
具体的,计算每条业务线的耗时信息的方法如下:
调用所述拦截器获取所述业务请求的所述请求标识、所述应用的标识以及所述业务链标识;
根据每个所述应用的请求开始时间和结束时间,计算所述应用的请求耗时;
将所述请求标识、所述应用的标识和所述请求耗时以及所述业务链标识输出到所述应用的日志中。
S103:从所述应用的日志中提取目标日志,所述目标日志为包括所述请求标识的日志;
S104:对所述目标日志进行解析,得到所述业务请求所调用的所述应用构成的业务链;
对所述目标日志进行解析,得到所述业务请求所调用的所有所述应用的标识;
根据时间对所述应用进行排序,得到所述业务链。
如退款业务请求可能调用销账-微信销账业务链或退款-支付宝退款业务链或销账-电e包销账业务链。
S105:按所述请求标识对所述目标日志进行聚合处理,得到所述业务链调用的耗时信息。
在预设时间范围内按所述请求标识对所述目标日志进行聚合处理,得到所述业务链的请求次数、平均耗时和最高耗时。
其中,以销账-微信销账业务线、退款-支付宝退款业务线、销账-电e包销账业务线为例,聚合处理后的耗时信息如图3所示。
进一步,在得到业务链调用的耗时信息之后,还可以在前端按层级将所述业务链中的应用标识、IP地址、接口、方法以及耗时信息进行展示,并将所述业务链的调用关系以图形串联的形式进行展示,如图4所示。
还可以根据业务链生成如图5所示的知识图谱。具体的,在业务链为正常业务链的情况下,对业务链中的应用标识、IP地址、接口以及方法进行可视化图表展示,生成知识图谱。需要说明的是,如果一个业务请求在某个应用异常中断,则该业务请求调用的业务链不是正常业务链。基于知识图谱便于学习、理解业务,比如新入职同事可以以此熟悉业务,复杂的业务关系也可以从知识图谱中查询。
基于上述实施例公开的一种业务链调用解析方法,本实施例对应公开了一种业务链调用解析装置,请参阅图6,该装置包括:
业务请求响应单元100,用于响应于业务请求,调用集成在应用中的拦截器生成所述业务请求的请求标识;
拦截器调用单元200,用于在检测到所述业务请求执行结束的情况下,调用所述拦截器获取所述业务请求所调用的所述应用的标识和耗时信息以及业务链标识,并将所述请求标识、所述应用的标识和耗时信息以及所述业务链标识输出到所述应用的日志中;
目标日志提取单元300,用于从所述应用的日志中提取目标日志,所述目标日志为包括所述请求标识的日志;
目标日志解析单元400,用于对所述目标日志进行解析,得到所述业务请求所调用的所述应用构成的业务链;
聚合处理单元500,用于按所述请求标识对所述目标日志进行聚合处理,得到所述业务链调用的耗时信息。
可选的,所述业务请求响应单元,具体用于:
调用所述拦截器获取所述业务请求的调用信息,并利用雪花算法根据所述调用信息生成所述请求标识,所述调用信息包括所述业务请求的方法名、应用标识、URL和时间戳。
可选的,所述拦截器调用单元,具体用于:
调用所述拦截器获取所述业务请求的所述请求标识、所述应用的标识以及所述业务链标识;
根据每个所述应用的请求开始时间和结束时间,计算所述应用的请求耗时;
将所述请求标识、所述应用的标识和所述请求耗时以及所述业务链标识输出到所述应用的日志中。
可选的,所述目标日志解析单元,具体用于:
对所述目标日志进行解析,得到所述业务请求所调用的所有所述应用的标识;
根据时间对所述应用进行排序,得到所述业务链。
可选的,所述聚合处理单元,具体用于:
在预设时间范围内按所述请求标识对所述目标日志进行聚合处理,得到所述业务链的请求次数、平均耗时和最高耗时。
可选的,所述装置还包括:
交易展示单元,用于在前端按层级将所述业务链中的应用标识、IP地址、接口、方法以及耗时信息进行展示,并将所述业务链的调用关系以图形串联的形式进行展示。
可选的,所述装置还包括:
知识图谱生成单元,用于在所述业务链为正常业务链的情况下,对所述业务链中的应用标识、IP地址、接口以及方法进行可视化图表展示,生成知识图谱。
本实施例公开的一种业务链调用解析装置,通过在应用中集成拦截器,响应于业务请求,通过调用拦截器输出包括该业务请求的请求标识、所调用应用的标识和耗时信息的应用日志,后续通过解析应用日志监控该业务请求所调用业务链的耗时信息,能及时发现高耗时业务链,便于后续代码优化,从而提高系统性能,提升用户体验。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
上述各个实施例之间可任意组合,对所公开的实施例的上述说明,本说明书中各实施例中记载的特征可以相互替换或者组合,使本领域专业技术人员能够实现或使用本申请。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。