CN114928530B - 链路信息采集方法及相关装置 - Google Patents
链路信息采集方法及相关装置 Download PDFInfo
- Publication number
- CN114928530B CN114928530B CN202210445605.6A CN202210445605A CN114928530B CN 114928530 B CN114928530 B CN 114928530B CN 202210445605 A CN202210445605 A CN 202210445605A CN 114928530 B CN114928530 B CN 114928530B
- Authority
- CN
- China
- Prior art keywords
- service
- request
- information
- response
- chain
- 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 94
- 230000004044 response Effects 0.000 claims abstract description 303
- 230000002159 abnormal effect Effects 0.000 claims abstract description 71
- 238000005070 sampling Methods 0.000 claims abstract description 15
- 230000005856 abnormality Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0631—Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0677—Localisation of faults
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种链路信息采集方法及相关装置,可应用于大数据技术领域。本申请的技术方案中,在服务链的调用结束后,服务节点向收集节点发送请求相关信息和/或响应相关信息,然后收集节点根据该请求相关信息和/或响应相关信息确定至少一个服务链中的每个服务链以及确定是否采集每个服务链。本申请的方法,不仅可以确保采集到完整的调用链路,进而可以准确追溯链路异常原因,还可以避免在调用过程中添加采样标识时容易导致同一条链路中不同节点的采样标识不一致的情况。
Description
技术领域
本申请涉及大数据技术领域,尤其涉及一种链路信息采集方法及相关装置。
背景技术
分布式链路追踪技术是指将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如每个节点上的耗时以及每个节点的请求状态等等,该调用链路也可以称为服务链。当一个分布式请求发生异常时,可以通过分布式链路追踪技术可以对该分布式请求中的异常进行定位和排查。
一种分布式链路的追踪方法包括:在调用某一节点之前,先设置该节点的采样标志初始状态,例如该节点的采样标志初始状态为1时表示该节点为采样节点,该节点的采样标志初始状态为0时表示该节点不是采样节点;当调用该节点的过程中发生异常时,则将该节点的采样标志保持或修改为1,以及将调用该节点的上一节点的采样标志保持或修改为1。
例如,假设一个完整的服务链为:节点A→节点B→节点C。当节点A调用节点B没有发生异常时不做处理,节点B继续调用节点C;当节点B调用节点C时发生异常时,将节点C的采样标志保持或修改为1,以及将节点B的采样标志保持或修改为1。
但是,本领域技术人员在使用上述方法采集链路信息,并基于该链路信息查找链路异常原因时,常常出现无法追溯或者不能准确追溯服务链异常的根本原因的问题。
因此,如何采集链路信息以提高链路异常原因的定位准确率,称为亟待解决的技术问题。
发明内容
本申请提供一种链路信息采集方法及相关装置,用以解决现有技术中可能导致无法追溯服务链异常原因的问题。
第一方面,本申请提供了一种链路信息采集方法,可以应用于收集节点中,该方法可以包括:接收分布式系统中每个服务节点在发送服务请求的情况下发送的请求相关信息,所述请求相关信息包含所述服务请求的第一链路标识、所述服务请求的位置标识和所述服务请求的状态信息,所述服务请求的位置标识用于指示所述服务请求在所述第一链路标识指示的服务链中的位置,所述服务请求的状态信息用于指示所述服务请求是否发生异常;根据所述请求相关信息中的第一链路标识和位置标识确定所述分布式系统中的至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求;根据所述每个服务链中的服务请求的状态信息确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息。
该方法中,多个服务节点发送的请求相关信息可能对应一个服务链,也可能对应多个服务链,因此收集节点可以根据多个服务节点发送的请求相关信息中的第一链路标识和位置标识确定至少一个服务链,以及可以根据请求相关信息中的状态信息确定是否采集所述至少一个服务链中的每个服务链。
该方法中,在确定完整的服务链之后,再根据服务链中的多个服务请求的状态信息确定这多个服务请求是否发生异常,也就是说,是否采集服务链是在服务链调用结束后才决定的,这样可以防止因服务链采集不完整导致追踪到其它的服务链上,甚至导致无法追溯异常原因的情况。
结合第一方面的方法,在第一种可能的实现方式中,所述根据所述每个服务链中的服务请求的状态信息确定是否采集所述每个服务链的信息的方法可以包括:根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常的情况下,确定采集所述每个服务链的信息。
该方法中,一个服务链可以包括多个服务请求,当该服务链中存在至少一个服务请求发生异常时,就采集该服务链的信息。这样根据多个服务请求中每个服务请求的状态信息可以确定该服务链中的哪一个服务请求发生异常,进而可以得到该服务链的异常原因。
结合第一方面的方法,在第二种可能的实现方式中,该方法还可以包括:接收所述分布式系统中每个服务节点在接收到服务响应的情况下发送的响应相关信息,所述服务响应为所述服务请求对应的服务响应,所述响应相关信息包含所述服务响应的第二链路标识、所述服务响应的位置标识和所述服务响应的状态信息,所述服务响应的位置标识用于指示所述服务响应在所述第二链路标识指示的服务链中的位置,所述服务响应的状态信息用于指示所述服务响应是否发生异常。
相应地,根据所述请求相关信息中的第一链路标识和位置标识确定所述分布式系统中的至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求,可以包括:根据所述请求相关信息中的第一链路标识和位置标识以及所述响应相关信息中的第二链路标识和位置标识,确定所述至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求和多个服务响应。
相应地,所述根据所述每个服务链中的服务请求的状态信息确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息,可以包括:根据所述每个服务链中的服务请求的状态信息和服务响应的状态信息确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息和所有服务响应的状态信息。
该方法中,一个服务链可以包括多个服务请求,以及这多个服务请求中每个服务请求所对应的服务响应。
该方法中,多个服务节点发送的请求相关信息和响应相关信息可能对应一个服务链,也可能对应多个服务链,因此收集节点可以根据多个服务节点发送的请求相关信息中的第一链路标识和位置标识以及多个服务节点接收到的响应相关信息中的第二链路标识和位置标识确定至少一个服务链,以及可以根据请求相关信息中的状态信息和响应相关信息中的状态信息确定是否采集所述至少一个服务链中的每个服务链。
该方法中,在确定完整的服务链之后,再根据服务链中的多个服务请求的状态信息和多个服务响应的状态信息确定这多个服务请求是否发生异常,也就是说,是否采集服务链是在服务链调用结束后才决定的,这样可以防止因服务链采集不完整导致追踪到其它的服务链上,甚至导致无法追溯异常原因的情况。
结合第二种可能的实现方式,在第三种可能的实现方式中,所述根据所述每个服务链中的服务请求的状态信息和服务响应的状态信息确定是否采集所述每个服务链的信息的方法可以包括:根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常的情况下,和/或,根据所述每个服务链中的服务响应的状态信息确定所述每个服务链中至少一个服务响应发生异常的情况下,确定采集所述每个服务链的信息。
该方法中,一个服务链可以包括多个服务请求和多个服务响应,当该服务链中存在至少一个服务请求发生异常,和/或该服务链中存在至少一个服务响应发生异常时,就采集该服务链的信息。这样根据多个服务请求中每个服务请求的状态信息可以确定该服务链中的哪一个服务请求发生异常,以及根据多个服务响应中每个服务响应的状态信息可以确定该服务链中的哪一个服务响应发生异常,进而可以得到该服务链的异常原因。
可选地,在第四种可能的实现方式中,所述请求相关信息中还可以包括所述服务请求的请求时间,所述响应相关信息中还包括所述服务响应的响应时间。
相应地,所述根据所述每个服务链中的服务请求的状态信息和服务响应的状态信息确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息和所有服务响应的状态信息,可以包括:根据所述每个服务链中的服务请求的状态信息、服务响应的状态信息以及服务请求的请求时间与服务响应的响应时间之间的时间差值,确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息、所有服务响应的状态信息和每个服务请求的请求时间至对应服务响应的响应时间之间的时间差。
该方法中,根据每个服务请求的请求时间至对应服务响应的响应时间之间的时间差可以得到每个服务链的多个服务的服务调用时长和服务提供时长,进而可以确定每个服务链的多个服务是否超时。
该方法中,在确定完整的服务链之后,再根据服务链中的多个服务请求的状态信息、多个服务响应的状态信息和多个服务请求中每个服务请求的请求时间至对应服务响应的响应时间之间的时间差确定这多个服务请求是否发生异常,也就是说,是否采集服务链是在服务链调用结束后才决定的,这样可以防止因服务链采集不完整导致追踪到其它的服务链上,甚至导致无法追溯异常原因的情况。
结合第四种可能的实现方式,在第五种可能的实现方式中,所述根据所述每个服务链中的服务请求的状态信息、服务响应的状态信息以及服务请求的请求时间与服务响应的响应时间之间的时间差值,确定是否采集所述每个服务链的信息,可以包括:若存在以下至少一种情况:根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常,根据所述每个服务链中的服务响应的状态信息确定所述每个服务链中至少一个服务响应发生异常,服务请求的请求时间与服务响应的响应时间之间的时间差值大于或等于预设时间长度,则确定采集所述每个服务链的信息。
该方法中,一个服务链可以包括多个服务请求和多个服务响应,即一个服务链可以对应多个请求时间与响应时间之间的时间差值。当该服务链中存在至少一个服务请求发生异常,和/或该服务链中存在至少一个服务响应发生异常,和/或该服务链中多个时间差值中存在至少一个时间差值超过预设时长时,就采集该服务链的信息。这样根据多个服务请求中每个服务请求的状态信息可以确定该服务链中的哪一个服务请求发生异常,以及根据多个服务响应中每个服务响应的状态信息可以确定该服务链中的哪一个服务响应发生异常,以及根据每个时间差值可以确定该服务中的哪一个时间差值超过预设时长,进而可以得到该服务链的异常原因。
可选地,在第六种可能的实现方式中,该方法还可以包括:根据服务链信息采样率确定是否采集所述每个服务链的信息。
该方法中,在服务链中的多个服务请求都不存在异常,且服务链中的多个服务响应都不存在异常,且多个服务请求的请求时间与服务响应的响应时间之间的时间差值均小于预设时间长度的情况下,根据服务链信息采样率确定是否采集服务链的信息。
例如,假设系统中服务链的信息采样率为1%,即从100个服务链中需要采集一个服务链的信息,假设前99个服务链均没有被采集,则采集第100个服务链的信息。
第二方面,本申请提供了另一种链路信息采集方法,可以应用于服务节点中,该方法可以包括:分布式系统中每个服务节点在发送服务请求的情况下向收集节点发送请求相关信息,所述请求相关信息包含所述服务请求的第一链路标识、所述服务请求的位置标识和所述服务请求的状态信息,所述服务请求的位置标识用于指示所述服务请求在所述第一链路标识指示的服务链中的位置,所述服务请求的状态信息用于指示所述服务请求是否发生异常。
该方法中,每个服务节点向收集节点发送请求相关信息,使收集节点可以根据每个服务节点发送的服务相关信息中的第一链路标识和位置标识确定至少一个服务链,以及可以根据每个服务节点发送的服务相关信息中的状态信息确定所述至少一个服务链中的每个服务链是否异常。
该方法还可以包括:分布式系统中每个服务节点在接收到服务响应的情况下向收集节点发送响应相关信息,所述服务响应为所述服务请求对应的服务响应,所述响应相关信息包含所述服务响应的第二链路标识、所述服务响应的位置标识和所述服务响应的状态信息,所述服务响应的位置标识用于指示所述服务响应在所述第二链路标识指示的服务链中的位置,所述服务响应的状态信息用于指示所述服务响应是否发生异常。
可选地,上述请求相关信息中还可以包括服务请求的请求时间。可选地,上述响应相关信息中还可以包括服务响应的响应时间。
该方法中,每个服务节点向收集节点发送服务请求的请求时间和服务响应的响应时间,使收集节点可以根据服务请求的请求时间和服务响应的响应时间确定至少一个服务链中每个服务链中是否存在超时的调用。
第三方面,本申请提供一种链路信息采集装置,该装置可以包括用于实现第一方面中的方法的各个功能模块。例如,该装置可以包括:接收模块和确定模块。
其中,接收模块用于接收分布式系统中每个服务节点在发送服务请求的情况下发送的请求相关信息,所述请求相关信息包含所述服务请求的第一链路标识、所述服务请求的位置标识和所述服务请求的状态信息,所述服务请求的位置标识用于指示所述服务请求在所述第一链路标识指示的服务链中的位置,所述服务请求的状态信息用于指示所述服务请求是否发生异常。
确定模块用于根据所述请求相关信息中的第一链路标识和位置标识确定所述分布式系统中的至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求。
该确定模块还可以用于根据所述每个服务链中的服务请求的状态信息确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息。
可选地,该确定模块还可以用于根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常的情况下,确定采集所述每个服务链的信息。
可选地,接收模块还可以用于接收所述分布式系统中每个服务节点在接收到服务响应的情况下发送的响应相关信息,所述服务响应为所述服务请求对应的服务响应,所述响应相关信息包含所述服务响应的第二链路标识、所述服务响应的位置标识和所述服务响应的状态信息,所述服务响应的位置标识用于指示所述服务响应在所述第二链路标识指示的服务链中的位置,所述服务响应的状态信息用于指示所述服务响应是否发生异常。
相应地,确定模块还可以用于根据所述请求相关信息中的第一链路标识和位置标识以及所述响应相关信息中的第二链路标识和位置标识,确定所述至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求和多个服务响应。
确定模块还可以用于根据所述每个服务链中的服务请求的状态信息和服务响应的状态信息确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息和所有服务响应的状态信息。
可选地,确定模块还可以用于根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常的情况下,和/或,根据所述每个服务链中的服务响应的状态信息确定所述每个服务链中至少一个服务响应发生异常的情况下,确定采集所述每个服务链的信息。
可选地,上述请求相关信息中还可以包括所述服务请求的请求时间,上述响应相关信息中还可以包括所述服务响应的响应时间。
相应地,确定模块还可以用于根据所述每个服务链中的服务请求的状态信息、服务响应的状态信息以及服务请求的请求时间与服务响应的响应时间之间的时间差值,确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息、所有服务响应的状态信息和每个服务请求的请求时间至对应服务响应的响应时间之间的时间差。
确定模块还可以用于若存在以下至少一种情况:根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常,根据所述每个服务链中的服务响应的状态信息确定所述每个服务链中至少一个服务响应发生异常,服务请求的请求时间与服务响应的响应时间之间的时间差值大于或等于预设时间长度,则确定采集所述每个服务链的信息。
可选地,确定模块还可以用于根据服务链信息采样率确定是否采集所述每个服务链的信息。
可以理解的是,该链路信息采集装置所能达到的技术效果可以参考第一方面。
第四方面,本申请提供一种链路信息采集装置,该装置可以包括用于实现第二方面中的方法的各个功能模块。例如,该装置可以包括发送模块。
发送模块可以用于分布式系统中每个服务节点在发送服务请求的情况下向收集节点发送请求相关信息,所述请求相关信息包含所述服务请求的第一链路标识、所述服务请求的位置标识和所述服务请求的状态信息,所述服务请求的位置标识用于指示所述服务请求在所述第一链路标识指示的服务链中的位置,所述服务请求的状态信息用于指示所述服务请求是否发生异常。
发送模块还可以用于分布式系统中每个服务节点在接收到服务响应的情况下向收集节点发送响应相关信息,所述服务响应为所述服务请求对应的服务响应,所述响应相关信息包含所述服务响应的第二链路标识、所述服务响应的位置标识和所述服务响应的状态信息,所述服务响应的位置标识用于指示所述服务响应在所述第二链路标识指示的服务链中的位置,所述服务响应的状态信息用于指示所述服务响应是否发生异常。
可以理解的是,该链路信息采集装置所能达到的技术效果可以参考第二方面。
第五方面,本申请提供一种链路信息采集装置,该装置可以包括用于实现第一方面或第二方面中的方法的各个模块。例如,该装置可以包括存储器,以及与存储器耦合的处理器。
处理器用于执行程序指令,以实现第一方面或第二方面中方法所执行的指令;存储器用于存储处理器执行的指令或存储处理器运行指令所需的输入数据或存储处理器运行指令后产生的数据。
第六方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质存储用于处理器执行的程序代码,该程序代码包括用于实现第一方面或第二方面中的方法的指令。
第七方面,本申请提供一种计算机程序产品,当该计算机程序产品在处理器上运行时,使得该链路信息采集装置可以实现第一方面或第二方面的方法。
可以理解的是,本申请提供的链路信息采集装置、计算机可读存储介质和计算机程序产品所能达到的技术效果可以参考第一方面和第二方面。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请适用的一种应用场景示意图;
图2为本申请一个实施例提供的通信系统架构示意图;
图3为本申请一个实施例提供的链路信息采集方法流程示意图;
图4为本申请一个实施例提供的服务链的树状结构示意图;
图5为本申请另一个实施例提供的链路信息采集方法流程示意图;
图6为本申请一个实施例提供的用于采集服务链信息的架构示意图;
图7为本申请一个实施例提供的服务节点获取请求相关信息和响应相关信息的方法流程示意图;
图8为本申请一个实施例提供的链路信息采集装置示意图;
图9为本申请另一个实施例提供的链路信息采集装置示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
图1为本申请适用的一种应用场景示意图。如图1所示,该场景中可以包括客户端和服务器,客户端与服务器之间相互通信。
客户端为接收交易业务请求信息的一方,它可以基于该交易业务请求信息向服务器发起服务请求,该服务请求用于指示对某一服务进行调用以完成该交易业务请求,该交易业务请求信息可以包括交易时间、交易方式、交易对象和交易类型等信息。
服务器为接收服务请求的一方,它接收到服务请求后可以基于该服务请求提供对应的服务,并将服务的结果发送给客户端。该服务器可以包括一个服务器,也可以包括多个服务器,这多个服务器中的某一个服务器可以调用另一个服务器。
客户端与服务器之间可以基于多种网络协议进行通信,例如传输控制协议/网际协议(transmission control protocol/internet protocol,TCP/IP)、用户数据报/国际协议(user datagram protocol/internet protocol,UDP/IP)、超文本传输协议(hypertext transfer protocol,HTTP)、超文本传输安全协议(hyper text transfer protocolover secure socket layer,HTTPS)等。当然,网络协议还可以包括在上述协议之上使用的远程过程调用协议(remote procedure call protocol,RPC)、表述性状态转移协议(representational state transfer,REST)等。
可以理解的是,该通信系统架构中的客户端和服务器均为调用链路中的节点。
在一种示例中,假设系统中包括一个服务器,该服务器可以接收到来自客户端的服务请求,且可以基于该服务请求提供相应的服务。这种情况下,服务链中包括两个服务节点,即客户端和服务器,其中客户端为该服务链中的链路入口节点。该示例中,当客户端对服务器发起调用时,客户端为此次调用的服务消费者,服务器1为此次调用的服务提供者。
在另一种示例中,假设系统中包括两个服务器,这两个服务器分别为服务器1和服务器2。当服务器1接收到来自客户端的服务请求时,可以对服务器2进行调用,然后服务器2提供相应的服务。这种情况下,服务链中包括三个服务节点,即客户端、服务器1和服务器2,其中客户端为该服务链中的链路入口节点。该示例中,当客户端对服务器1发起调用时,客户端为此次调用的服务消费者,服务器1为此次调用的服务提供者;当服务器1对服务器2发起调用时,服务器1为此次调用的服务消费者,服务器2为此次调用的服务提供者。
图2为本申请一个实施例提供的通信系统架构示意图。如图2所示,该通信系统架构中可以包括m个服务节点和收集节点,这m个服务节点分别为服务节点1、服务节点2、…、服务节点m,这m个服务节点中的每个服务节点都可以与收集节点之间进行通信。
这m个服务节点可以为不同的服务设备,且这m个服务节点之间可以相互调用。对不同的交易业务而言,这m个服务节点之间的调用情况也不相同。假设该通信系统架构中包括四个服务节点,这四个服务节点分别为服务节点1、服务节点2、服务节点3和服务节点4。
在第一种示例中,假设处理业务1时所用的服务链为:服务节点1→服务节点2→服务节点3→服务节点4。该服务链中包括三次调用,在第一次调用过程中,服务节点1为服务消费者,服务节点2为服务提供者;在第二次调用过程中,服务节点2为服务消费者,服务节点3为服务提供者;在第三次调用过程中,服务节点3为服务消费者,服务节点4为服务提供者。
该示例中,服务节点1为服务链路的入口节点,可以为图1中的客户端。服务节点2、服务节点3和服务节点4可以为图1中的服务器,且服务节点2、服务节点3和服务节点4可以为不同的服务器。
在第二种示例中,假设处理业务2时所用的服务链为:服务节点1→服务节点2→服务节点4。该服务链中包括两次调用,在第一次调用过程中,服务节点1为服务消费者,服务节点2为服务提供者;在第二次调用过程中,服务节点2为服务消费者,服务节点4为服务提供者。
该示例中,服务节点1为调用链路的入口节点,可以为图1中的客户端。服务节点2和服务节点4可以为图1中的服务器,且服务节点2和服务节点4可以为不同的服务器。
另外,这m个服务节点中的每个服务节点都可以将各自的调用信息发送给收集节点,所述调用信息可以包括请求相关信息和响应相关信息,其中请求相关信息包括每个服务节点发送的服务请求中每个服务请求的链路标识(traceID)、位置标识(spanID)和状态信息,响应相关信息包括每个服务节点接收的服务请求中每个服务请求的链路标识、位置标识和状态信息。
其中,链路标识用于标识某一次具体的请求编号(ID)。当用户的请求进入系统后,会在调用网络的第一层生成一个全局唯一的链路标识,并且会随着每一层的调用,不断往后传递,这样的话通过链路标识就可以把一次用户请求在系统中调用的路径串联起来。
位置标识用于标识一次调用在分布式请求中的位置。在一种示例中,当用户的请求进入系统后,处在调用网络的第一层A时位置标识初始值是0,进入下一层调用B的时候位置标识是0.1,继续进入下一层调用C时位置标识是0.1.1,而与B处在同一层的调用E的位置标识是0.2,这样的话通过位置标识就可以定位某一次请求在系统调用中所处的位置,以及它的上下游依赖分别是谁。
该位置标识中可以包括父调用编号和调用编号,其中,调用编号用于标识某一次请求在系统调用中的位置,父调用编号用于标识某一次请求的上一次请求在系统调用中的位置。
可以理解的是,每个服务节点可以调用其它服务节点,也可以被其它服务节点调用。
可以理解的是,一个服务节点也可以位于不同的服务链中,该服务节点在不同服务链中对应的服务请求的链路标识不同。
收集节点接收到服务节点的调用信息后,可以对出现异常或调用超时的服务链进行采集。
可选地,该收集节点也可以有多个。当一个服务节点中对应多个链路标识时,可以将不同链路标识所对应的调用信息发送给不同的收集节点。当多个服务节点中包括链路标识相同的调用信息时,可以将这些调用信息发送给同一个收集节点。
本实施例中,该收集节点可以部署在一个服务器中。可选地,该收集节点还可以是一种服务器。
可选地,该通信系统中还可以包括数据库,该数据库可以用于存储每个服务请求的链路标识、位置标识和状态信息等信息。
现有技术中,当服务链发生异常时,只对发生异常的那部分调用以及发生异常之后的调用进行采集,即无法采集到完整的服务链,导致无法准确追踪到服务链,进而可能出现无法追溯异常原因的情况。
例如,假设一个完整的服务链为:服务节点A→服务节点B→服务节点C。当服务节点A调用服务节点B没有发生异常时不做处理,服务节点B继续调用服务节点C;当服务节点B调用服务节点C时发生异常时,将服务节点C的采样标志保持或修改为1,以及将服务节点B的采样标志保持或修改为1。
当服务节点B调用服务节点C时发生异常时,只对该部分出现异常的调用进行采样。但是在实际调用过程中,还可能存在其它的服务链中也包括该调用,如服务节点D→服务节点B→服务节点C。假设该调用发生异常是由于服务节点A调用服务节点B引起的,而服务节点A调用服务节点B时没有发生异常,此时仅采集该调用时,由于无法采集到完整的服务链,导致无法追溯或者不能准确追溯服务链异常的根本原因,进而导致链路异常原因的定位准确率较低。
为此,本申请提出了一种新的技术方案,可以采集到有异常的全量链路信息,从而可以基于该链路信息准确追踪到服务链的异常。
图3为本申请一个实施例提供的链路信息采集方法流程示意图,如图3所示,该链路信息采集方法可以包括S301、S302和S303。
S301,收集节点接收分布式系统中每个服务节点在发送服务请求的情况下发送的请求相关信息,请求相关信息包含该服务请求的第一链路标识、该服务请求的位置标识和该服务请求的状态信息。
本实施例中,该分布式系统可以为如图2所示的通信系统,该收集节点可以为如图2所示系统中的收集节点,该分布式系统中的服务节点可以为如图2所示系统中的m个服务节点。
本实施例中,服务请求的第一链路标识用于指示服务节点发送的服务请求的链路标识,服务请求的位置标识用于指示该服务请求在第一链路标识指示的服务链中的位置,服务请求的状态信息用于指示该服务请求是否发生异常。
可以理解的是,每个服务节点都可以对应多个服务请求,且这多个服务请求可以位于同一个服务链中,也可以位于不同的服务链中。当这多个服务请求位于同一个服务链中时,这多个服务请求的第一链路标识相同;当这多个服务请求位于不同的服务链中时,这多个服务请求的第一链路标识不相同。
可选地,这里的收集节点可以包括一个或多个收集节点,这一个或多个收集节点中的每个收集节点都可以接收多个服务请求,且这多个服务请求的第一链路标识可以不同。
S302,收集节点根据所述请求相关信息中的第一链路标识和位置标识确定所述分布式系统中的至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求。
根据所述请求相关信息中的第一链路标识和位置标识确定所述分布式系统中的至少一个服务链的方法可以包括:先获取第一链路标识相同的多个服务请求,然后根据这多个服务请求中的位置标识确定这多个服务请求的调用关系,最后基于该调用关系确定完整的服务链。
该方法中,该收集节点接收的服务请求的第一链路标识可以不同,也就是说,该收集节点可以接收到至少一个服务链中的服务请求,这至少一个服务链中每个服务链的链路标识不同。因此根据链路标识的不同,可以根据该收集节点接收的服务请求确定至少一个服务链。
作为一个示例,假设收集节点接收到六个请求相关信息,这六个请求相关信息分别对应服务请求1、服务请求2、服务请求3、服务请求4、服务请求5和服务请求6。假设这六个服务请求中每个服务请求的第一链路标识相同,且这六个服务请求中每个服务请求的位置标识不一样。
该示例中,这六个服务请求中每个服务请求的第一链路标识相同,则表示这六个服务请求位于同一个服务链中。
根据这六个服务请求中每个服务请求的位置标识,可以确定这六个服务请求中每个服务请求之间的依赖关系,然后根据每个服务请求之间的依赖关系和这六个服务请求可以确定该服务链的树状结构,该服务链的树状结构可以如图4所示。
可以理解的是,这六个服务请求可以是同一个服务节点发送给收集节点的,也可以是不同的服务节点发送给收集节点的。
S303,收集节点根据每个服务链中的服务请求的状态信息确定是否采集每个服务链的信息,每个服务链的信息包括每个服务链中所有服务请求的状态信息。
本方法中,收集节点根据每个服务链中的服务请求的状态信息确定是否采集每个服务链的信息的方法可以包括:首先收集节点对每个服务链中的服务请求进行遍历,确定根据每个服务链中的服务请求的状态信息确定每个服务链中的服务请求是否存在异常,在确定每个服务链中至少一个服务请求发生异常的情况下,确定采集每个服务链的信息。
在一种示例中,假设存在两个服务链:服务链1和服务链2,服务链1包括三个服务请求,服务链2包括五个服务请求。
例如,当服务链1中存在至少一个服务请求发生异常时,采集服务链1中三个服务请求的状态信息。
又如,当服务链2中存在至少一个服务请求发生异常时,采集服务链2中五个服务请求的状态信息。
可选地,该链路信息采集方法还可以包括:接收分布式系统中每个服务节点在接收到服务响应的情况下发送的响应相关信息,服务响应为服务请求对应的服务响应,响应相关信息包含服务响应的第二链路标识、服务响应的位置标识和服务响应的状态信息。
其中,服务响应的第二链路标识用于指示服务节点接收的服务响应的链路标识,服务响应的位置标识用于指示服务响应在第二链路标识指示的服务链中的位置,服务响应的状态信息用于指示服务响应是否发生异常。
可以理解的是,每个服务节点都可以对应多个服务响应,且这多个服务响应可以位于同一个服务链中,也可以位于不同的服务链中。当这多个服务响应位于同一个服务链中时,这多个服务响应的第二链路标识相同;当这多个服务响应位于不同的服务链中时,这多个服务响应的第二链路标识不相同。
这种情况下,前述根据请求相关信息中的第一链路标识和位置标识确定分布式系统中的至少一个服务链的方法可以包括:根据请求相关信息中的第一链路标识和位置标识以及响应相关信息中的第二链路标识和位置标识,确定至少一个服务链,至少一个服务链中每个服务链包含多个服务请求和多个服务响应。
该方法中,该收集节点接收的服务请求的第一链路标识可以不同,且该收集节点接收的服务响应的第二链路标识可以不同。也就是说,该收集节点可以接收到至少一个服务链中的服务请求和服务响应,这至少一个服务链中每个服务链的链路标识不同。因此根据链路标识的不同,可以根据该收集节点接收的服务请求和服务响应确定至少一个服务链。
可以理解的是,服务响应与该服务响应对应的服务请求位于同一个服务链中,即服务响应的第二链路标识与该服务响应对应的服务请求的第一链路标识一致。
这种情况下,前述根据每个服务链中的服务请求的状态信息确定是否采集每个服务链的信息的方法可以包括:根据每个服务链中的服务请求的状态信息和服务响应的状态信息确定是否采集每个服务链的信息,每个服务链的信息包括每个服务链中所有服务请求的状态信息和所有服务响应的状态信息。
其中,根据每个服务链中的服务请求的状态信息和服务响应的状态信息确定是否采集每个服务链的信息可以包括:根据每个服务链中的服务请求的状态信息确定每个服务链中至少一个服务请求发生异常的情况下,和/或,根据每个服务链中的服务响应的状态信息确定每个服务链中至少一个服务响应发生异常的情况下,确定采集每个服务链的信息。
在一种示例中,假设存在一个服务链:服务链1,服务链1包括三个服务请求和三个服务响应,这三个服务请求分别与这三个服务响应对应。
例如,当服务链1中存在至少一个服务请求发生异常时,采集服务链1中三个服务请求的状态信息和三个服务响应的状态信息。
又如,当服务链1中存在至少一个服务响应发生异常时,采集服务链1中三个服务请求的状态信息和三个服务响应的状态信息。
再如,当服务链1中存在至少一个服务请求和至少一个服务响应发生异常时,采集服务链1中三个服务请求的状态信息和三个服务响应的状态信息。
可选地,上述请求相关信息中还可以包括服务请求的请求时间,上述响应相关信息中还包括服务响应的响应时间。
这种情况下,前述根据每个服务链中的服务请求的状态信息和服务响应的状态信息确定是否采集每个服务链的信息,每个服务链的信息包括每个服务链中所有服务请求的状态信息和所有服务响应的状态信息可以包括:根据每个服务链中的服务请求的状态信息、服务响应的状态信息以及服务请求的请求时间与服务响应的响应时间之间的时间差值,确定是否采集每个服务链的信息,每个服务链的信息包括每个服务链中所有服务请求的状态信息、所有服务响应的状态信息和每个服务请求的请求时间至对应服务响应的响应时间之间的时间差。
可以理解的是,一个服务请求可以包括服务调用开始时间、服务提供开始时间、服务提供结束时间和服务调用结束时间。其中,调用开始时间和服务提供开始时间为服务请求时间,服务提供结束时间和服务调用结束时间为服务响应时间。
可以理解的是,一个服务请求对应两个服务节点,这两个服务节点中的作为服务消费者的服务节点所对应的请求时间和响应时间分别为该服务请求的服务调用开始时间和服务调用结束时间,此时请求时间与响应时间之间的差值为该服务请求的服务调用时长。这两个服务节点中的作为服务提供者的服务节点所对应的请求时间和响应时间分别为该服务请求的服务提供结束时间和服务调用结束时间,此时请求时间与响应时间之间的差值为该服务请求的服务提供时长。
例如,假设一个服务请求为:服务节点1→服务节点2,服务节点1为该服务请求的服务消费者,服务节点2为该服务请求的服务提供者。该示例中,服务节点1所对应的请求时间和响应时间分别为该服务请求的服务调用开始时间和服务调用结束时间,该请求时间与该响应时间之间的差值为该服务请求的服务调用时长。服务节点2所对应的请求时间和响应时间分别为该服务请求的服务提供结束时间和服务调用结束时间,该请求时间与该响应时间之间的差值为该服务请求的服务提供时长。
可以理解的是,当服务请求的请求时间与服务响应的响应时间之间的时间差值大于或等于预设时间长度时,表示该调用请求的服务调用时间过长或服务提供时间过长。
该方法中,根据每个服务链中的服务请求的状态信息、服务响应的状态信息以及服务请求的请求时间与服务响应的响应时间之间的时间差值,确定是否采集每个服务链的信息的方法可以包括:若存在以下至少一种情况:根据每个服务链中的服务请求的状态信息确定每个服务链中至少一个服务请求发生异常,根据每个服务链中的服务响应的状态信息确定每个服务链中至少一个服务响应发生异常,服务请求的请求时间与服务响应的响应时间之间的时间差值大于或等于预设时间长度,则确定采集所述每个服务链的信息。
可选地,在每个服务链中的多个服务请求都没有发生异常,且每个服务链中的多个服务响应都没有发生异常,且多个服务请求的请求时间和多个服务响应的响应时间之间的时间差值均小于预设时间长度的情况下,根据服务链信息采样率确定是否采集所述每个服务链的信息。
其中,多个服务请求的请求时间和多个服务响应的响应时间之间的时间差值指的是,这多个服务请求中每个服务请求的请求时间与该服务请求所对应的服务响应的响应时间之间的时间差。
本方法中,当收集节点采集到服务链的信息后,可以将服务链的信息进行持久化操作存储到数据库中。
图5为本申请另一个实施例提供的链路信息采集方法流程示意图。如图5所示,该链路信息采集方法可以包括S501和S502。
S501,分布式系统中每个服务节点在发送服务请求的情况下向收集节点发送请求相关信息,请求相关信息包含该服务请求的第一链路标识、该服务请求的位置标识和该服务请求的状态信息。相应地,收集节点接收该请求相关信息。
本实施例中,该分布式系统可以为如图2所示的通信系统,该收集节点可以为如图2所示系统中的收集节点,该分布式系统中的服务节点可以为如图2所示系统中的m个服务节点。
本实施例中,服务请求的第一链路标识用于指示服务节点发送的服务请求的链路标识,服务请求的位置标识用于指示该服务请求在第一链路标识指示的服务链中的位置,服务请求的状态信息用于指示该服务请求是否发生异常。
可以理解的是,每个服务节点都可以对应多个服务请求,且这多个服务请求可以位于同一个服务链中,也可以位于不同的服务链中。当这多个服务请求位于同一个服务链中时,这多个服务请求的第一链路标识相同;当这多个服务请求位于不同的服务链中时,这多个服务请求的第一链路标识不相同。
可选地,这里的收集节点可以包括一个或多个收集节点,每个服务节点向收集节点发送请求相关信息时,可以将相同第一链路标识的请求相关信息发送给同一个收集节点。另外,这一个或多个收集节点中的每个收集节点都可以接收多个请求相关信息,且这多个请求相关信息中的第一链路标识可以不同。
本实施例中,每个服务节点向收集节点发送请求相关信息时,可以对请求相关信息的第一链路标识进行哈希计算,得到第一链路标识所对应的哈希值,然后将哈希值相同的第一链路标识所对应的请求相关信息发送给同一个收集节点。
可选地,该请求相关信息中还可以包括服务请求的请求时间。作为一个示例,当服务节点为服务请求中的服务消费者时,该服务请求的请求时间为该服务请求的服务调用开始时间。作为另一个示例,当服务节点为服务请求中的服务提供者时,该服务请求的请求时间为该服务请求的服务提供开始时间。
S502,分布式系统中每个服务节点接收到服务响应的情况下向收集节点发送响应相关信息,响应相关信息包含该服务响应的第二链路标识、该服务响应的位置标识和该服务响应的状态信息。相应地,收集节点接收该响应相关信息。
本实施例中,服务响应的第二链路标识用于指示服务节点接收的服务响应的链路标识,服务响应的位置标识用于指示服务响应在第二链路标识指示的服务链中的位置,服务响应的状态信息用于指示服务响应是否发生异常。
可以理解的是,每个服务节点都可以对应多个服务响应,且这多个服务响应可以位于同一个服务链中,也可以位于不同的服务链中。当这多个服务响应位于同一个服务链中时,这多个服务响应的第二链路标识相同;当这多个服务响应位于不同的服务链中时,这多个服务响应的第二链路标识不相同。
可选地,这里的收集节点可以包括一个或多个收集节点,每个服务节点向收集节点发送响应相关信息时,可以将相同第二链路标识的响应相关信息发送给同一个收集节点。另外,这一个或多个收集节点中的每个收集节点都可以接收多个响应相关信息,且这多个响应相关信息中的第二链路标识可以不同。
本实施例中,每个服务节点向收集节点发送响应相关信息时,可以对服务响应的第二链路标识进行哈希计算,得到第二链路标识所对应的哈希值,然后将哈希值相同的第二链路标识所对应的响应相关信息发送给同一个收集节点。
可选地,该响应相关信息中还可以包括服务响应的响应时间。作为一个示例,当服务节点为服务响应中的服务消费者时,该服务响应的响应时间为该服务响应的服务调用结束时间。作为另一个示例,当服务节点为服务响应中的服务提供者时,该服务响应的响应时间为该服务请求的服务提供结束时间。
图6为本申请一个实施例提供的用于采集服务链信息的架构示意图。如图6所示,该用于采集服务链信息的架构可以包括服务节点、收集节点、收集网关、传输与持久化节点、数据库和可视化展示节点。
假设该架构中包括三个服务节点和一个收集节点,这三个服务节点分别为:服务节点1、服务节点2和服务节点3,这三个服务节点之间的调用关系为:服务节点1→服务节点2→服务节点3,其中,服务节点1向服务节点2发送服务请求1,服务节点2向服务节点3发送服务请求2,服务节点3向服务节点2发送服务响应2,服务节点2向服务节点1发送服务响应1。
该实施例中,服务节点1、服务节点2和服务节点3可以在发送服务请求的情况下向收集节点发送请求相关信息,服务节点1、服务节点2和服务节点3可以在发送服务响应的情况下向收集节点发送响应相关信息。
收集节点接收到请求相关信息和响应相关信息后,可以根据请求相关信息和响应相关信息中的位置标识确定该服务链的树状结构,然后遍历该服务链中每个服务请求的请求相关信息和每个服务响应的响应相关信息,判断该服务链中是否存在异常的服务请求,以及判断该服务链中是否存在异常的服务响应。在该服务链中存在异常的服务请求和/或存在异常的服务响应的情况下,采集该服务链的信息。该服务链的信息包括该服务链中所有服务请求和所有服务响应的状态信息,可选地,该服务链的信息还可以包括该服务链中所有服务请求和所有服务响应的链路标识和位置标识。
收集节点采集到该服务链的信息后,可以将该服务链的信息发送给收集网关。
可以理解的是,服务节点向收集节点发送该服务链的信息时可以通过暴露http的方式发送。可选地,还可以通过其它方式发送,例如HTTPS、TCP/IP等方式。
收集网关接收到该服务链的信息后,可以将该服务链的信息发送给传输与持久化节点。
传输与持久化节点可以将该服务链的信息传输至数据库中。
可视化展示节点可以从该数据库中获取该服务链的信息,并对该服务链的信息进行展示。
本实施例中,收集节点、收集网关、传输与持久化节点、数据库和可视化展示节点可以部署在同一个服务器中。
接下来,本申请将以一次调用为例,对服务节点获取请求相关信息和响应相关信息进行说明,例如该调用为服务节点1→服务节点2,节点1向节点2发送服务请求,相应地,节点2接收该服务请求;节点2提供服务后向节点1发送服务响应,相应地,节点1接收该服务响应。此时节点1为该调用的服务消费者,节点2为该调用的服务提供者。
图7为本申请一个实施例提供的服务节点获取请求相关信息和响应相关信息的方法流程示意图。如图7所示,该方法可以包括S701、S702、S703、S704和S705。
S701,服务节点1获取调用的链路信息。
本实施例中,该服务节点1可以为图2中的任何一个服务节点,该调用的链路信息包括链路标识和位置标识。
链路编号用于标识一个服务链,一个服务链对应一个链路标识。可以理解,当一个服务链包括多次调用时,这多次调用的链路标识一致,这多次调用中的每次调用可以包括一次服务请求和一次服务响应。
位置标识用于标识一次调用在服务链中的位置,位置标识可以包括父调用编号和调用编号。当服务链中仅包括该调用或该调用为服务链中的第一次调用时,父调用编号为空。当该调用不是服务链的第一次调用时,父调用编号为该调用之前的那次调用所对应的调用编号。
本实施例中,服务节点1在获取该调用的链路信息之前,先获取交易请求信息,该交易请求信息可以包括交易时间、交易方式、交易对象和交易类型等信息;然后基于该交易请求信息进行生成对应的交易业务逻辑,并根据该交易业务逻辑生成服务请求,该服务请求中可以包括链路编号、父调用编号和调用编号;最后从该服务请求中获取该调用的链路信息。
可选地,当服务节点1为链路的入口节点时,若该服务请求中没有链路标识,此时自动生成链路标识和位置标识,并将位置标识中的父调用编号设置为空。
可选地,服务节点1还可以记录该调用的开始时间,并将该调用的开始时间和链路信息存储在本地内存。
可以理解的是,该服务节点1可以为客户端,也可以为服务器。当该服务节点1为客户端时,该服务节点1即为整条链路的入口节点。
S702,服务节点1将该调用的链路信息发送给服务节点2。相应地,服务节点2接收该调用的链路信息。
本实施例中,服务节点2可以为图2中除服务节点1以外的其他任何一个服务节点。
服务节点1将该调用的链路信息发送给服务节点2的方法可以包括:服务节点1的交易业务逻辑以RPC协议调用服务节点2的交易业务逻辑时,服务节点1先将本地内存中存储的链路信息放入调用上下文中,然后将调用上下文中的链路信息发送给服务节点2。
可选地,服务节点1的交易业务逻辑以RPC协议调用服务节点2的交易业务逻辑时只是一种调用方式,当以RPC协议进行调用时,调用上下文为“RPC context”。
本实施中,服务节点2接收到该调用的链路信息后,可以记录接收到该调用的链路信息的时间,服务节点2接收该调用的链路信息的时间即为服务节点2提供服务的开始时间。
S703,服务节点2获取该调用的服务请求的状态信息,该服务请求的状态信息用于指示该服务请求是否发生异常。
本实施例中,当服务节点1向服务节点2发送链路信息的过程中,或服务节点2提供服务的过程中发生异常时,表示该服务请求发生异常,服务节点2记录该异常。
可选地,服务节点2提供服务后,可以记录服务节点2的服务提供结束时间。
S704,服务节点2将该调用的链路信息和该调用的服务请求的状态信息发送给服务节点1。相应地,服务节点1接收该调用的链路信息和该调用的服务请求的状态信息。
可选地,服务节点1还可以记录接收到该调用的链路信息和获取该调用的服务请求的状态信息的时间,服务节点1接收到该调用的链路信息和获取该调用的服务请求的状态信息的时间即为该调用的结束时间。
S705,服务节点1获取该调用的服务响应的状态信息,该服务响应的状态信息用于指示该服务响应是否发生异常。
本实施例中,当服务节点2向服务节点1发送调用的链路信息和该调用的服务请求的状态信息的过程中发生异常时,表示该服务响应发生异常,节点1记录该异常。
本申请的技术方案中,可以在服务链中所有调用完全结束后,判断该服务链中的多个服务请求是否存在异常,以及判断该服务链中的多个服务响应是否存在异常,以及服务请求的请求时间与服务响应的响应时间之间的时间差值。在该服务链中至少一个服务请求发生异常,或至少一个服务响应发生异常,或服务请求的请求时间与服务响应的响应时间之间的时间差值大于或等于预设时间长度时,采集该服务链的信息。该方法中,链路信息是否采集是在该服务链中完全结束后才决定的,这样可以采集到完整的服务链,进而可以从完整的服务链中确定异常原因,提高链路异常原因的定位准确率。
图8为本申请一个实施例提供的链路信息采集装置示意图,如图8所示,该链路信息采集装置800可以包括:接收模块801和确定模块802。
该链路信息采集装置800可以用于实现图3所示实施例的链路信息采集方法流程示意图。其中,接收模块801可以用于执行S301,确定模块802可以用于执行S302和S303。
图9为本申请另一个实施例提供的链路信息采集装置示意图,如图9所示,该链路信息采集装置900包括:处理器901和接口电路902。处理器901和接口电路902之间相互耦合。可以理解的是,接口电路902可以为收发器或输入输出接口。
可选的,该软件数字水印装置900还可以包括存储器903,用于存储处理器901执行的指令或存储处理器901运行指令所需要的输入数据或存储处理器901运行指令后产生的数据。
作为一个示例,处理器901可以用于实现上述确定模块802的功能,接口电路902可以用于实现上述接收模块801的功能。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元,还可以是其它通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器、闪存、只读存储器、可编程只读存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(application specific integrated circuit,ASIC)中。另外,该专用集成电路可以位于网络设备或终端设备中。当然,处理器和存储介质也可以作为分立组件存在于网络设备或终端设备中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘;还可以是半导体介质,例如,固态硬盘。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
可以理解的是,在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围由权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (8)
1.一种链路信息采集方法,其特征在于,包括:
接收分布式系统中每个服务节点在发送服务请求的情况下发送的请求相关信息,所述请求相关信息包含所述服务请求的第一链路标识、所述服务请求的位置标识和所述服务请求的状态信息,所述服务请求的位置标识用于指示所述服务请求在所述第一链路标识指示的服务链中的位置,所述服务请求的状态信息用于指示所述服务请求是否发生异常;
根据所述请求相关信息中的第一链路标识和位置标识确定所述分布式系统中的至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求;
根据所述每个服务链中的服务请求的状态信息确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息;
所述方法还包括:
接收所述分布式系统中每个服务节点在接收到服务响应的情况下发送的响应相关信息,所述服务响应为所述服务请求对应的服务响应,所述响应相关信息包含所述服务响应的状态信息,所述服务响应的状态信息用于指示所述服务响应是否发生异常;
所述请求相关信息中还包括所述服务请求的请求时间,所述响应相关信息中还包括所述服务响应的响应时间,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息和所有服务响应的状态信息;
相应的,所述根据所述每个服务链中的服务请求的状态信息确定是否采集所述每个服务链的信息,包括:
若存在以下至少一种情况:根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常,根据所述每个服务链中的服务响应的状态信息确定所述每个服务链中至少一个服务响应发生异常,服务请求的请求时间与服务响应的响应时间之间的时间差值大于或等于预设时间长度,则确定采集所述每个服务链的信息。
2.根据权利要求1所述的方法,其特征在于,所述根据所述每个服务链中的服务请求的状态信息确定是否采集所述每个服务链的信息,包括:
根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常的情况下,确定采集所述每个服务链的信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述响应相关信息还包含所述服务响应的第二链路标识和所述服务响应的位置标识,所述服务响应的位置标识用于指示所述服务响应在所述第二链路标识指示的服务链中的位置;
相应地,根据所述请求相关信息中的第一链路标识和位置标识确定所述分布式系统中的至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求,包括:
根据所述请求相关信息中的第一链路标识和位置标识以及所述响应相关信息中的第二链路标识和位置标识,确定所述至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求和多个服务响应。
4.根据权利要求1所述的方法,其特征在于,所述根据所述每个服务链中的服务请求的状态信息确定是否采集所述每个服务链的信息,包括:
根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常的情况下,和/或,根据所述每个服务链中的服务响应的状态信息确定所述每个服务链中至少一个服务响应发生异常的情况下,确定采集所述每个服务链的信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据服务链信息采样率确定是否采集所述每个服务链的信息。
6.一种链路信息采集装置,其特征在于,包括:
接收模块,用于接收分布式系统中每个服务节点在发送服务请求的情况下发送的请求相关信息,所述请求相关信息包含所述服务请求的第一链路标识、所述服务请求的位置标识和所述服务请求的状态信息,所述服务请求的位置标识用于指示所述服务请求在所述第一链路标识指示的服务链中的位置,所述服务请求的状态信息用于指示所述服务请求是否发生异常;
确定模块,用于根据所述请求相关信息中的第一链路标识和位置标识确定所述分布式系统中的至少一个服务链,所述至少一个服务链中每个服务链包含多个服务请求;
所述确定模块,还用于根据所述每个服务链中的服务请求的状态信息确定是否采集所述每个服务链的信息,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息;
所述接收模块,还用于接收所述分布式系统中每个服务节点在接收到服务响应的情况下发送的响应相关信息,所述服务响应为所述服务请求对应的服务响应,所述响应相关信息包含所述服务响应的状态信息,所述服务响应的状态信息用于指示所述服务响应是否发生异常;
所述请求相关信息中还包括所述服务请求的请求时间,所述响应相关信息中还包括所述服务响应的响应时间,所述每个服务链的信息包括所述每个服务链中所有服务请求的状态信息和所有服务响应的状态信息;
所述确定模块,具体用于:若存在以下至少一种情况:根据所述每个服务链中的服务请求的状态信息确定所述每个服务链中至少一个服务请求发生异常,根据所述每个服务链中的服务响应的状态信息确定所述每个服务链中至少一个服务响应发生异常,服务请求的请求时间与服务响应的响应时间之间的时间差值大于或等于预设时间长度,则确定采集所述每个服务链的信息。
7.一种链路信息采集装置,其特征在于,包括存储器,以及与存储器耦合的处理器;
所述存储器用于存储程序指令;
所述处理器用于执行所述程序指令,以实现如权利要求1至5中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储用于计算机执行的程序代码,该程序代码包括用于实现如权利要求1至5中任一项所述的方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210445605.6A CN114928530B (zh) | 2022-04-24 | 2022-04-24 | 链路信息采集方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210445605.6A CN114928530B (zh) | 2022-04-24 | 2022-04-24 | 链路信息采集方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114928530A CN114928530A (zh) | 2022-08-19 |
CN114928530B true CN114928530B (zh) | 2024-04-09 |
Family
ID=82807452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210445605.6A Active CN114928530B (zh) | 2022-04-24 | 2022-04-24 | 链路信息采集方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114928530B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108632111A (zh) * | 2018-04-02 | 2018-10-09 | 广东能龙教育股份有限公司 | 一种基于日志的服务链路监控方法 |
CN111163150A (zh) * | 2019-12-25 | 2020-05-15 | 上海精鲲计算机科技有限公司 | 一种分布式调用追踪系统 |
CN111176941A (zh) * | 2019-12-25 | 2020-05-19 | 贝壳技术有限公司 | 一种数据处理的方法、装置和存储介质 |
CN112437155A (zh) * | 2020-11-20 | 2021-03-02 | 北京健康之家科技有限公司 | 服务数据的处理方法、装置以及服务端设备 |
CN112783629A (zh) * | 2021-02-01 | 2021-05-11 | 天津五八到家货运服务有限公司 | 服务调用方法、装置、电子设备及存储介质 |
CN113067747A (zh) * | 2021-03-15 | 2021-07-02 | 中国工商银行股份有限公司 | 一种链路异常追溯方法、集群、节点及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110113291B (zh) * | 2018-02-01 | 2020-10-13 | 上海诺基亚贝尔股份有限公司 | 用于在业务功能链域之间进行互通的方法和设备 |
-
2022
- 2022-04-24 CN CN202210445605.6A patent/CN114928530B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108632111A (zh) * | 2018-04-02 | 2018-10-09 | 广东能龙教育股份有限公司 | 一种基于日志的服务链路监控方法 |
CN111163150A (zh) * | 2019-12-25 | 2020-05-15 | 上海精鲲计算机科技有限公司 | 一种分布式调用追踪系统 |
CN111176941A (zh) * | 2019-12-25 | 2020-05-19 | 贝壳技术有限公司 | 一种数据处理的方法、装置和存储介质 |
CN112437155A (zh) * | 2020-11-20 | 2021-03-02 | 北京健康之家科技有限公司 | 服务数据的处理方法、装置以及服务端设备 |
CN112783629A (zh) * | 2021-02-01 | 2021-05-11 | 天津五八到家货运服务有限公司 | 服务调用方法、装置、电子设备及存储介质 |
CN113067747A (zh) * | 2021-03-15 | 2021-07-02 | 中国工商银行股份有限公司 | 一种链路异常追溯方法、集群、节点及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114928530A (zh) | 2022-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7685270B1 (en) | Method and apparatus for measuring latency in web services | |
CN111221743B (zh) | 自动化测试方法及系统 | |
CN107181675B (zh) | 服务调用方法及装置 | |
CN106656536B (zh) | 一种用于处理服务调用信息的方法与设备 | |
US7401141B2 (en) | Method and system for monitoring performance of distributed applications | |
CN108471366A (zh) | 一种面向云原生应用的立体监控系统 | |
US20110320870A1 (en) | Collecting network-level packets into a data structure in response to an abnormal condition | |
CN111459760B (zh) | 一种微服务监控方法、装置及计算机存储介质 | |
CN112448969A (zh) | 链路追踪方法、装置、系统、设备及可读存储介质 | |
CN114745295A (zh) | 数据采集方法、装置、设备和可读存储介质 | |
CN116244339A (zh) | 业务中台运营服务监测数据融合方法、装置、终端及介质 | |
CN115705190A (zh) | 依赖程度的确定方法及装置 | |
CN114928530B (zh) | 链路信息采集方法及相关装置 | |
US10616306B2 (en) | System and method for large-scale capture and tracking of web-based application parameters | |
CN109818799A (zh) | 日志采集分析方法及设备 | |
CN116132625A (zh) | 交易流程的监管方法和装置 | |
CN113114612B (zh) | 分布式系统调用链的确定方法和装置 | |
CN112948225B (zh) | 一种链路监控方法、装置、监控设备及存储介质 | |
CN114238024A (zh) | 时序图生成方法与系统 | |
CN114567543A (zh) | 一种问题接口的定位方法、装置、电子设备及存储介质 | |
CN115391127A (zh) | 一种拨测方法、装置、存储介质及芯片 | |
CN110196862B (zh) | 一种数据场景构造方法、装置、服务器与系统 | |
CN114760218B (zh) | 一种链路采样方法及其相关装置 | |
CN109684220A (zh) | 一种基于事件回放的浏览器兼容性分析方法 | |
CN115168489B (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 |