CN113965489B - 链路超时检测方法、装置、计算机设备和存储介质 - Google Patents
链路超时检测方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113965489B CN113965489B CN202111305220.1A CN202111305220A CN113965489B CN 113965489 B CN113965489 B CN 113965489B CN 202111305220 A CN202111305220 A CN 202111305220A CN 113965489 B CN113965489 B CN 113965489B
- Authority
- CN
- China
- Prior art keywords
- service
- link
- detected
- services
- timeout time
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
Landscapes
- Engineering & Computer Science (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种链路超时检测方法、装置、计算机设备和存储介质。所述方法包括:根据第一数据库,生成待检测链路;所述第一数据库中存储有实际链路中的多个服务的服务信息,所述待检测链路由所述服务信息中的链路标识相同的多个服务所组成;从第二数据库中获取所述待检测链路中的每个服务的预设超时时间;所述第二数据库中存储有多个服务的预设超时时间;根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果。采用本方法,能够简化链路超时检测流程,有利于减少人力物力的投入,进而提高了链路超时检测效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种链路超时检测方法、装置、计算机设备和存储介质。
背景技术
链路中包括多个服务,每个服务的超时时间设置如果不合理,比如上游的超时时间小于下游设置的超时时间,会出现上游服务已经超时返回,但是下游服务还在处理中的情况,从而导致上下游状态不一致等异常情况;因此,为了避免出现异常情况,需要验证链路中的上下游服务之间的超时时间设置是否合理。
传统技术中,在链路较长的情况下,测试人员会通过选择一个链路内的重点交易及重点服务,对这些重点交易及重点服务注入网络延时等故障,动态验证上下游的超时时间设置是否合理;但是,这种动态验证的方法,需要投入的人力物力较大,导致链路超时检测效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高链路超时检测效率的链路超时检测方法、装置、计算机设备和存储介质。
一种链路超时检测方法,所述方法包括:
根据第一数据库,生成待检测链路;所述第一数据库中存储有实际链路中的多个服务的服务信息,所述待检测链路由所述服务信息中的链路标识相同的多个服务所组成;
从第二数据库中获取所述待检测链路中的每个服务的预设超时时间;所述第二数据库中存储有多个服务的预设超时时间;
根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果。
在其中一个实施例中,所述根据第一数据库,生成待检测链路,包括:
从所述第一数据库中,筛选出所述服务信息中的链路标识相同的多个服务;
根据所述多个服务的服务信息中的服务标识和上游服务标识,确定所述多个服务之间的依赖关系;
按照所述依赖关系,将所述多个服务进行组合,得到所述待检测链路。
在其中一个实施例中,所述根据所述多个服务的服务信息中的服务标识和上游服务标识,确定所述多个服务之间的依赖关系,包括:
按照下游服务的服务信息中的上游服务标识与所述下游服务的上游服务的服务信息中的服务标识相同的关系,基于所述多个服务的服务信息中的服务标识和上游服务标识,确定所述多个服务之间的依赖关系。
在其中一个实施例中,在根据第一数据库,生成待检测链路之前,还包括:
获取实际链路中的每个服务的链路标识、服务标识和上游服务标识;其中,属于同一条实际链路的服务的链路标识相同;
根据所述每个服务的链路标识、服务标识和上游服务标识,得到所述每个服务的服务信息;
将所述每个服务的服务信息分类存储至所述第一数据库中。
在其中一个实施例中,在从第二数据库中获取所述待检测链路中的每个服务的预设超时时间之前,还包括:
获取实际链路中的每个服务的预设超时时间;
将所述每个服务的预设超时时间存储至所述第二数据库中。
在其中一个实施例中,所述根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果,包括:
当所述待检测链路中上游服务的预设超时时间大于下游服务的预设超时时间时,则确认所述待检测链路的超时时间设置成功;
当所述待检测链路中上游服务的预设超时时间小于或者等于下游服务的预设超时时间时,则确认所述待检测链路的超时时间设置失败。
在其中一个实施例中,在确认所述待检测链路的超时时间设置失败之后,还包括:
根据超时时间设置失败的链路和所述链路中的每个服务的预设超时时间,生成链路超时检测报告;
将所述链路超时检测报告发送至对应的用户终端。
一种链路超时检测装置,所述装置包括:
链路生成模块,用于根据第一数据库,生成待检测链路;所述第一数据库中存储有实际链路中的多个服务的服务信息,所述待检测链路由所述服务信息中的链路标识相同的多个服务所组成;
时间获取模块,用于从第二数据库中获取所述待检测链路中的每个服务的预设超时时间;所述第二数据库中存储有多个服务的预设超时时间;
结果生成模块,用于根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
根据第一数据库,生成待检测链路;所述第一数据库中存储有实际链路中的多个服务的服务信息,所述待检测链路由所述服务信息中的链路标识相同的多个服务所组成;
从第二数据库中获取所述待检测链路中的每个服务的预设超时时间;所述第二数据库中存储有多个服务的预设超时时间;
根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
根据第一数据库,生成待检测链路;所述第一数据库中存储有实际链路中的多个服务的服务信息,所述待检测链路由所述服务信息中的链路标识相同的多个服务所组成;
从第二数据库中获取所述待检测链路中的每个服务的预设超时时间;所述第二数据库中存储有多个服务的预设超时时间;
根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果。
上述链路超时检测方法、装置、计算机设备和存储介质,根据第一数据库,生成待检测链路;第一数据库中存储有实际链路中的多个服务的服务信息,待检测链路由服务信息中的链路标识相同的多个服务所组成;然后从第二数据库中获取待检测链路中的每个服务的预设超时时间;第二数据库中存储有多个服务的预设超时时间;最后根据待检测链路中的每个服务的预设超时时间,生成对待检测链路的超时检测结果;这样,根据存储有实际链路中的多个服务的服务信息的第一数据库,自动生成待检测链路,并结合第二数据库中存储的该待检测链路中的每个服务的预设超时时间,自动生成对该待检测链路的超时检测结果,无需自行选择一个链路内的重点交易及重点服务,并对这些重点交易及重点服务注入网络延时等故障,从而简化了链路超时检测流程,有利于减少人力物力的投入,进而提高了链路超时检测效率。
附图说明
图1为一个实施例中链路超时检测方法的流程示意图;
图2为一个实施例中根据第一数据库,生成待检测链路的步骤的流程示意图;
图3为一个实施例中生成交易链路的上下游服务的traceid、spanid和parentspanid,记录下交易链路,并按照一定格式把信息存储到数据库的步骤的流程示意图;
图4为一个实施例中在实际的交易链路中生成每个服务的traceid、spanid和parentspanid,并将其存储至数据库中的步骤的流程示意图;
图5为另一个实施例中链路超时检测方法的流程示意图;
图6为又一个实施例中链路超时检测方法的流程示意图;
图7为一个实施例中链路超时检测装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种链路超时检测方法,本实施例以该方法应用于服务器进行举例说明,可以理解的是,该方法也可以应用于终端中,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
步骤S101,根据第一数据库,生成待检测链路;第一数据库中存储有实际链路中的多个服务的服务信息,待检测链路由服务信息中的链路标识相同的多个服务所组成。
其中,待检测链路是指需要检测服务的超时时间是否设置合理的链路,比如交易链路;待检测链路中包括多个服务,具体是由链路标识相同的多个服务所组成,比如服务A-->服务B-->服务C;在实际场景中,待检测链路可以包括多个分支链路。
其中,实际链路是指实际处理过程中的链路,比如交易链路;第一数据库中存储有实际链路中包括的多个服务的服务信息,每个服务的服务信息包括唯一索引、链路标识(比如traceid)、服务标识(比如spanid)、上游服务标识(比如parentspanid)和服务名称,其存储格式为:唯一索引|traceid|spanid|parentspanid|服务名称。需要说明的是,不同链路对应的链路标识不一样,且链路标识贯穿整个链路,在整个链路中保持不变,作为标示链路的唯一ID。
具体地,服务器从存储有实际链路中的多个服务的服务信息的第一数据库中,筛选出服务信息中的链路标识相同的多个服务,并将服务信息中的链路标识相同的多个服务进行组合,得到待检测链路,比如服务A-->服务B-->服务C。
步骤S102,从第二数据库中获取待检测链路中的每个服务的预设超时时间;第二数据库中存储有多个服务的预设超时时间。
其中,预设超时时间是指预先设置的响应超时时间,表示请求端等待服务端返回响应的最长等待时间,当请求端未在超时时间内收到服务端返回的响应数据,则主动放弃等待,释放占用的资源,避免请求不断累积带来的请求端的雪崩效应。
其中,第二数据库中存储有实际链路中包括的多个服务的预设超时时间,每个服务的预设超时时间在第二数据库中的存储格式为:唯一索引|服务名称|预设超时时间。
具体地,服务器根据待检测链路中的每个服务的服务名称,查询第二数据库中存储的多个服务名称对应的预设超时时间,得到待检测链路中的每个服务的预设超时时间,比如服务A|60000ms|服务B|50000ms|服务C|20000ms。
步骤S103,根据待检测链路中的每个服务的预设超时时间,生成对待检测链路的超时检测结果。
其中,针对待检测链路,若上游服务的预设超时时间-下游服务的预设超时时间>0,表示待检测链路中的上下游服务的超时时间设置合理,否则,表示待检测链路中的上下游服务的超时时间设置不合理。
需要说明的是,在待检测链路中,若每个上游服务的预设超时时间均大于该上游服务的下游服务的预设超时时间,则表示待检测链路中的上下游服务的超时时间均设置合理。
具体地,服务器根据待检测链路中的每个服务的预设超时时间,检测该待检测链路中的上下游服务的超时时间是否设置合理,得到对待检测链路的超时检测结果。
例如,上游服务为服务A,对应的预设超时时间为60000ms,下游服务为服务B,对应的预设超时时间为50000ms,则表示该上下游服务的超时时间设置合理。
上述链路超时检测方法中,根据第一数据库,生成待检测链路;第一数据库中存储有实际链路中的多个服务的服务信息,待检测链路由服务信息中的链路标识相同的多个服务所组成;然后从第二数据库中获取待检测链路中的每个服务的预设超时时间;第二数据库中存储有多个服务的预设超时时间;最后根据待检测链路中的每个服务的预设超时时间,生成对待检测链路的超时检测结果;这样,根据存储有实际链路中的多个服务的服务信息的第一数据库,自动生成待检测链路,并结合第二数据库中存储的该待检测链路中的每个服务的预设超时时间,自动生成对该待检测链路的超时检测结果,无需自行选择一个链路内的重点交易及重点服务,并对这些重点交易及重点服务注入网络延时等故障,从而简化了链路超时检测流程,有利于减少人力物力的投入,进而提高了链路超时检测效率。
在一个实施例中,如图2所示,上述步骤S101,根据第一数据库,生成待检测链路,具体包括如下步骤:
步骤S201,从第一数据库中,筛选出服务信息中的链路标识相同的多个服务。
步骤S202,根据多个服务的服务信息中的服务标识和上游服务标识,确定多个服务之间的依赖关系。
步骤S203,按照依赖关系,将多个服务进行组合,得到待检测链路。
具体地,服务器从存储有多个服务的服务信息的第一数据库中,筛选出服务信息中的链路标识相同的多个服务;根据链路标识相同的多个服务的服务信息中的服务标识和上游服务标识,确定链路标识相同的多个服务之间的上下游依赖关系;按照链路标识相同的多个服务之间的上下游依赖关系,将链路标识相同的多个服务进行组合,得到待检测链路。
举例说明,服务器先从存储有多个服务的服务信息的Linking表中,生成交易链路;比如,服务器先遍历traceid相同的服务,并找到parentspanid为-1的服务名,该服务为根服务;然后把traceid相同的服务,按照下游服务的parentspaid等于上游服务的spanid的依赖关系,生成多个分支交易链路,比如服务A-->服务B-->服务C、服务A-->服务B-->服务D和服务A-->服务E-->服务F;根据多个分支交易链路,得到总的交易链路;接着,服务器从存储有多个服务的预设超时时间的Timeout表中,匹配得到每一个分支交易链路中的服务的预设超时时间,并按照以下格式将交易链路及预设超时时间存储到数据库中:traceid|第几分支|服务名1|服务名1设置的超时时间|服务名2|服务名2设置的超时时间|服务名3|服务名3设置的超时时间|……|服务名n|服务名n设置的超时时间|,具体参考表1:
表1
在本实施例中,先从第一数据库中,筛选出服务信息中的链路标识相同的多个服务,再根据多个服务的服务信息中的服务标识和上游服务标识,确定多个服务之间的依赖关系,最后按照依赖关系,将多个服务进行组合,得到待检测链路,有利于准确得到整条待检测链路,便于后续对待检测链路进行全面检测。
在一个实施例中,上述步骤S202,根据多个服务的服务信息中的服务标识和上游服务标识,确定多个服务之间的依赖关系,包括:按照下游服务的服务信息中的上游服务标识与下游服务的上游服务的服务信息中的服务标识相同的关系,基于多个服务的服务信息中的服务标识和上游服务标识,确定多个服务之间的依赖关系。
比如,traceid均为XXYY的服务包括服务A、服务B和服务C,服务A的spanid为1,parentspanid为-1,服务B的spanid为2,parentspanid为1,服务C的spanid为4,parentspanid为2,则服务A、服务B和服务C之间的依赖关系为服务A-->服务B-->服务C。
在本实施例中,按照下游服务的服务信息中的上游服务标识与下游服务的上游服务的服务信息中的服务标识相同的关系,有利于准确确定出多个服务之间的依赖关系,进而提高了后续基于依赖关系得到的待检测链路的准确率。
在一个实施例中,上述步骤S101,在根据第一数据库,生成待检测链路之前,还包括:获取实际链路中的每个服务的链路标识、服务标识和上游服务标识;其中,属于同一条实际链路的服务的链路标识相同;根据每个服务的链路标识、服务标识和上游服务标识,得到每个服务的服务信息;将每个服务的服务信息分类存储至第一数据库中。
举例说明,参考图3,在生产环境,当实际发生交易时,服务器生成交易链路的上下游服务的traceid、spanid和parentspanid,记录下交易链路,并按照一定格式把信息存储到数据库,具体步骤如下:
步骤S301,在生产环境,客户端发起实际交易请求,并在第一个服务A生成调用链唯一标示traceid和第一个服务A的Spanid,记为A.Spanid,以及A.ParentSpanid。
其中,客户端发送请求到第一个服务,会生成一个traceid,这个traceid贯穿整个交易链路,在整个交易链路中保持不变,作为标示交易调用链的唯一ID;为了使traceid唯一表示,避免重复,可以通过某种规则生成traceid;例如,可以通过以下规则生成traceid:服务器IP+生成traceid时的时间戳+自增序列+当前进程号;服务器IP指的是服务所在的服务器的IP,每个服务所在的服务IP不一样,服务器IP的表示为AAA.BBB.CCC.DDD,生成traceid时,其服务器IP则为AAABBBCCCDDD;用固定的位数表示时间戳,该时间戳的含义是生成traceid时的时间戳;自增序列可以用固定的位数来表示,例如,自增序列可以用4位来表示,范围是1000至9999,当自增序列为9999时,下一位又重新回到1000;当前进程号表示当前进程ID,主要是为了防止一个服务器中多进程出现traceid冲突的情况。
其中,spanid表示被调用服务的id,spanid代表本次调用的服务在整个调用链路树中的位置;同一调用层级中的服务的parentspanid相同,spanid不同,spanid从小到大表示请求的顺序;spanid的生成规则为递增生成;parentspanid表示被调用服务的父亲服务的spanid;需要说明的是,第一个服务作为根服务,没有父亲服务,故根服务的parentspanid置为-1;spanid和parentspanid两者结合,可以确定服务之间的依赖关系。
步骤S302,执行服务A的内部逻辑处理。
步骤S303,把服务A的traceid、spanid、parentspanid及该服务的名称存储到数据库中。
其中,每个服务所涉及的traceid、spanid、parentspanid及该服务的名称,以一定的存储方式存到数据库:唯一索引|traceid|spanid|parentspanid|服务名称。
步骤S304,把traceid和Spanid存放到请求报文中,并把请求报文发送给下一个目标服务。
步骤S305,目标服务收到上游服务发送过来的请求报文,解析请求报文,并把请求报文中的traceid和spanid提取出来,并把目标服务.parentspanid的值取值为提取出来的上游服务的spanid。生成目标服务的Spanid,记为目标服务.spanid。
步骤S306,执行本目标服务的内部逻辑处理。
步骤S307,把本目标服务的traceid和目标服务.spanid存放到报文中,并把请求发送给下一个目标服务。
步骤S308,把本服务的traceid、目标服务.spanid、目标服务.parentspanid及该服务的名称存储到数据库中。
步骤S309,判断是否还需要调用下游服务;若是,则循环执行S305、S306、S307和S308;若否,则整个交易服务调用结束。
再举例说明,参考图4,服务器在实际的交易链路中生成每个服务的traceid、spanid和parentspanid,并将其存储至数据库中,具体包括以下步骤:
步骤S401,客户端发起请求到第一服务A,在服务A生成traceid、parentspanid和spanid。
其中,假设生成的traceid为XXYY;因服务A是第一服务,没有父亲服务,故该根服务的parentspanid记为-1,服务A的spanid记为1;执行服务A的内部处理逻辑,并把traceid和A.spanid存放到请求报文中,把请求报文发送给目标服务B。
其中,服务器在数据库中创建表Linking存储交易链路的信息,把traceid、A.spanid、A.parentspanid、服务A的服务名称等记录到表Linking中,此时Linking表中的数据为:
表2
唯一索引 | traceid | spanid | parentspanid | 服务名称 |
10000000 | XXYY | 1 | -1 | 服务A |
步骤S402,服务B收到服务A的请求报文,解析请求报文,提取traceid为XXYY,A.spanid为1;因服务A是服务B的父亲节点,故B.parentspanid为1,生成B的spanid为2;执行服务B的内部处理逻辑,并把traceid和B.spanid存放到请求报文中,把请求报文发送给目标服务C。
其中,服务器把traceid、B.spanid、B.parentspanid、服务B的服务名称等记录到表Linking中,此时Linking表中的数据为:
表3
唯一索引 | traceid | spanid | parentspanid | 服务名称 |
10000000 | XXYY | 1 | -1 | 服务A |
10000001 | XXYY | 2 | 1 | 服务B |
步骤S403,服务C收到服务B的请求报文,解析请求报文,提取traceid为XXYY,B.spanid为2;因服务B是服务C的父亲节点,故C.parentspanid为2,生成C的spanid为4。执行服务C的内部处理逻辑;因服务C没有下游目标服务,故返回报文给服务B,服务B把traceid和B.spanid存放到请求报文中,把请求报文发送给下一个目标服务D。
其中,服务器把traceid、C.spanid、C.parentspanid、服务C的服务名称等记录到表Linking中,此时Linking表中的数据为:
表4
唯一索引 | traceid | spanid | parentspanid | 服务名称 |
10000000 | XXYY | 1 | -1 | 服务A |
10000001 | XXYY | 2 | 1 | 服务B |
10000002 | XXYY | 4 | 2 | 服务C |
步骤S404,服务D收到服务B的请求报文,解析请求报文,提取traceid为XXYY,B.spanid为2;因服务B是服务D的父亲节点,故D.parentspanid为2,生成D的spanid为5;执行服务D的内部处理逻辑。因服务D没有下游目标服务,故返回报文给服务B,服务B处理结束,返回报文给服务A;服务A把traceid和A.spanid存放到请求报文中,把请求报文发送给下一个目标服务F。
其中,服务器把traceid、D.spanid、D.parentspanid、服务D的服务名称等记录到表Linking中,此时Linking表中的数据为:
表5
唯一索引 | traceid | spanid | parentspanid | 服务名称 |
110000000 | XXYY | 1 | -1 | 服务A |
10000001 | XXYY | 2 | 1 | 服务B |
10000002 | XXYY | 4 | 2 | 服务C |
10000003 | XXYY | 5 | 2 | 服务D |
步骤S405,服务E收到服务A的请求报文,解析请求报文,提取traceid为XXYY,A.spanid为1;因服务A是服务E的父亲节点,故E.parentspanid为1,生成E的spanid为3;执行服务E的内部处理逻辑,并把traceid和E.spanid存放到请求报文中,把请求报文发送给目标服务F。
其中,服务器把traceid、E.spanid、E.parentspanid、服务E的服务名称等记录到表Linking中,此时Linking表中的数据为:
表6
唯一索引 | traceid | spanid | parentspanid | 服务名称 |
10000000 | XXYY | 1 | -1 | 服务A |
10000001 | XXYY | 2 | 1 | 服务B |
10000002 | XXYY | 4 | 2 | 服务C |
10000003 | XXYY | 5 | 2 | 服务D |
10000004 | XXYY | 3 | 1 | 服务E |
步骤S406,服务F收到服务E的请求报文,解析请求报文,提取traceid为XXYY,E.spanid为3;因服务E是服务F的父亲节点,故F.parentspanid为3,生成F的spanid为6;执行服务F的内部处理逻辑。因服务F没有下游目标服务,故返回报文给服务E;因服务E没有下游目标服务,故返回报文给服务A;因服务A没有下游目标服务,交易结束。
其中,服务器把traceid、F.spanid、F.parentspanid、服务F的服务名称等记录到表Linking中,此时Linking表中的数据为:
表7
唯一索引 | traceid | spanid | parentspanid | 服务名称 |
10000000 | XXYY | 1 | -1 | 服务A |
10000001 | XXYY | 2 | 1 | 服务B |
10000002 | XXYY | 4 | 2 | 服务C |
10000003 | XXYY | 5 | 2 | 服务D |
10000004 | XXYY | 3 | 1 | 服务E |
10000005 | XXYY | 6 | 3 | 服务F |
在本实施例中,通过获取实际链路中的每个服务的服务信息,并将实际链路中的每个服务的服务信息分类存储至第一数据库中,有利于后续根据第一数据库中存储的多个服务的服务信息,自动生成待检测链路,无需投入过多的人力物力,从而提高了待检测链路的生成效率。
在一个实施例中,上述步骤S102,在从第二数据库中获取待检测链路中的每个服务的预设超时时间之前,还包括:获取实际链路中的每个服务的预设超时时间;将每个服务的预设超时时间存储至第二数据库中。
举例说明,服务器获取生产上所有服务的超时时间的设定值;其中,请求端到服务端之间,一般都会设定一个响应超时时间,表示请求端等待服务端返回响应的最长等待时间,当请求端未在超时时间内收到服务端返回的响应数据,则主动放弃等待,释放占用的资源,避免请求不断累积带来的请求端的雪崩效应;比如,超时时间设置为T0,请求端的服务A发送请求给服务端的服务B时,等待服务端的服务B返回的响应数据,当服务B的响应数据返回时间超过T0时,则服务A直接报超时错误,释放请求端的资源。接着,服务器把服务及其超时时间保存到数据库,保存的数据格式为:唯一索引|服务名|设置的超时时间(ms),具体参考表8。
表8
在本实施例中,通过获取实际链路中的每个服务的预设超时时间,并将每个服务的预设超时时间存储至第二数据库中,有利于后续从第二数据库中获取待检测链路中的每个服务的预设超时时间,进一步简化了链路超时检测流程,从而提高了链路超时检测效率。
在一个实施例中,上述步骤S103,根据待检测链路中的每个服务的预设超时时间,生成对待检测链路的超时检测结果,包括:当待检测链路中上游服务的预设超时时间大于下游服务的预设超时时间时,则确认待检测链路的超时时间设置成功;当待检测链路中上游服务的预设超时时间小于或者等于下游服务的预设超时时间时,则确认待检测链路的超时时间设置失败。
举例说明,假设上游服务为服务A,对应的预设超时时间为60000ms,下游服务为服务B,对应的预设超时时间为50000ms,则表示该上下游服务的超时时间设置合理;假设上游服务为服务A,对应的预设超时时间为60000ms,下游服务为服务B,对应的预设超时时间为70000ms,则表示该上下游服务的超时时间设置不合理。
在本实施例中,根据待检测链路中的每个服务的预设超时时间,自动检测待检测链路中的上下游服务的超时时间是否设置合理,无需自行选择一个链路内的重点交易及重点服务,并对这些重点交易及重点服务注入网络延时等故障,从而简化了链路超时检测流程,有利于减少人力物力的投入,进而提高了链路超时检测效率。
在一个实施例中,在确认待检测链路的超时时间设置失败之后,还包括:根据超时时间设置失败的链路和链路中的每个服务的预设超时时间,生成链路超时检测报告;将链路超时检测报告发送至对应的用户终端。
具体地,服务器获取链路超时检测报告模板,并将超时时间设置失败的链路和链路中的每个服务的预设超时时间导入到链路超时检测报告模板中的对应位置,得到成链路超时检测报告,并将链路超时检测报告通过邮件等发送方式发送至对应的用户终端,供用户对不合理的超时时间进行调整。
举例说明,假设超时时间设置失败的链路为服务A-->服务E-->服务F,服务A、服务E和服务F对应的超时时间分别为60000ms、70000ms和50000ms,则生成的链路超时检测报告为XXYY|3|服务A|60000|服务E|70000|服务F|50000。
在本实施例中,根据超时时间设置失败的链路和链路中的每个服务的预设超时时间,生成链路超时检测报告,并将链路超时检测报告发送至对应的用户终端,有利于开发人员及时对不合理的超时时间进行调整。
在一个实施例中,如图5所示,提供了另一种链路超时检测方法,以该方法应用于服务器为例进行说明,包括以下步骤:
步骤S501,获取实际链路中的每个服务的链路标识、服务标识和上游服务标识;根据每个服务的链路标识、服务标识和上游服务标识,得到每个服务的服务信息;将每个服务的服务信息分类存储至第一数据库中。
其中,属于同一条实际链路的服务的链路标识相同。
步骤S502,获取实际链路中的每个服务的预设超时时间;将每个服务的预设超时时间存储至第二数据库中。
步骤S503,从第一数据库中,筛选出服务信息中的链路标识相同的多个服务;按照下游服务的服务信息中的上游服务标识与下游服务的上游服务的服务信息中的服务标识相同的关系,基于多个服务的服务信息中的服务标识和上游服务标识,确定多个服务之间的依赖关系。
步骤S504,按照依赖关系,将多个服务进行组合,得到待检测链路。
步骤S505,从第二数据库中获取待检测链路中的每个服务的预设超时时间。
步骤S506,当待检测链路中上游服务的预设超时时间小于或者等于下游服务的预设超时时间时,则确认待检测链路的超时时间设置失败。
步骤S507,根据超时时间设置失败的链路和链路中的每个服务的预设超时时间,生成链路超时检测报告;将链路超时检测报告发送至对应的用户终端。
上述链路超时检测方法中,根据存储有实际链路中的多个服务的服务信息的第一数据库,自动生成待检测链路,并结合第二数据库中存储的该待检测链路中的每个服务的预设超时时间,自动生成对该待检测链路的超时检测结果,无需自行选择一个链路内的重点交易及重点服务,并对这些重点交易及重点服务注入网络延时等故障,从而简化了链路超时检测流程,有利于减少人力物力的投入,进而提高了链路超时检测效率。
为了更清晰阐明本申请实施例提供的链路超时检测方法,以下以一个具体的实施例对该链路超时检测方法进行具体说明。在一个实施例中,如图6所示,本申请还提供了又一种链路超时检测方法,首先通过生成交易链路的上下游的traceid、spanid及parentspanid记录下交易链路,然后匹配生产上每个服务的超时时间设置的值,计算上下游之间的超时时间是否合理,如果不合理,可以通过邮件等形式把交易链路及存在问题的服务超时时间发给开发人员,具体包括以下步骤:
步骤S601,在生产环境,当实际发生交易时,生成交易链路的上下游的traceid、spanid及parentspanid,记录下交易链路,并按照一定格式把信息存储到数据库。
其中,当生产环境发生实际交易时,通过生成traceid、spanid、parentspanid等,记录下交易的实际交易链路。该方法生成的交易链路覆盖面全,也最符合实际生产环境的情况。客户端发送请求到第一个服务,会生成一个traceid,这个traceid贯穿整个交易链路,作为标示交易调用链的唯一ID;spanid表示被调用服务的id,spanid代表本次调用在整个调用链路树中的位置;同一调用层级parentspanid相同,spanid不同,spanid从小到大表示请求的顺序;parentspanid表示被调用服务的父亲服务的spanid。第一个服务作为根服务,没有父亲服务,故根服务的Parentspanid置为-1;spanid和parentspanid两者结合,可以确定服务的依赖关系;每个服务所涉及的traceid、spanid、parentspanid及该服务的名称,以一定的存储方式存到数据库:唯一索引|traceid|spanid|parentspanid|服务名称。
步骤S602,获取生产上所有服务的超时时间的设置值,并保存到数据库。
其中,请求端到服务端之间,一般都会设定一个响应超时时间,表示请求端等待服务端返回响应的最长等待时间,当请求端未在超时时间内收到服务端返回的响应数据,则主动放弃等待,释放占用的资源,避免请求不断累积带来的请求端的雪崩效应;每个服务的超时时间以一定的存储方式存到数据库:唯一索引|服务名称|超时时间值。
步骤S603,匹配生成的交易链路以及每个链路中服务的超时时间。
具体地,服务器从Linking表中,可以生成交易的交易链路;从Timeout表中,可以获取到每个服务的超时时间。
步骤S604,计算上下游之间的超时时间设置是否合理,如果不合理,可以通过邮件等形式把交易链路及存在问题的服务超时时间发给开发人员。
具体地,服务器计算分支交易链路的上下游服务的超时时间设置是否符合以下不等式:上游服务设置的超时时间-下游服务的超时时间>0;若不符合,则认为分支交易链路的超时时间设置不合理。接着,把超时时间设置不合理的交易链路,及对应的服务超时时间等信息通过邮件等形式发送给开发人员,发送格式为:traceid|第几分支|服务名1|服务名1超时时间|服务名2|服务名2超时时间|服务名3|服务名3超时时间|……|服务名n|服务名n的超时时间;如实例所示,发送超时时间不合理的信息给开发人员,具体如下:XXYY|3|服务A|60000|服务E|70000|服务F|50000。
上述实施例,提供了一种全链路超时时间静态检查方法,以自动化静态检查的方式检测存在超时时间设置不合理的交易及服务,可显著减少人力物力的投入,提高测试效率,并提高测试的全面性。
应该理解的是,虽然图1-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-6中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种链路超时检测装置,包括:链路生成模块701、时间获取模块702和结果生成模块703,其中:
链路生成模块701,用于根据第一数据库,生成待检测链路;第一数据库中存储有实际链路中的多个服务的服务信息,待检测链路由服务信息中的链路标识相同的多个服务所组成。
时间获取模块702,用于从第二数据库中获取待检测链路中的每个服务的预设超时时间;第二数据库中存储有多个服务的预设超时时间。
结果生成模块703,用于根据待检测链路中的每个服务的预设超时时间,生成对待检测链路的超时检测结果。
在一个实施例中,链路生成模块701,还用于从第一数据库中,筛选出服务信息中的链路标识相同的多个服务;根据多个服务的服务信息中的服务标识和上游服务标识,确定多个服务之间的依赖关系;按照依赖关系,将多个服务进行组合,得到待检测链路。
在一个实施例中,链路生成模块701,还用于按照下游服务的服务信息中的上游服务标识与下游服务的上游服务的服务信息中的服务标识相同的关系,基于多个服务的服务信息中的服务标识和上游服务标识,确定多个服务之间的依赖关系。
在一个实施例中,链路超时检测装置还包括第一存储模块,用于获取实际链路中的每个服务的链路标识、服务标识和上游服务标识;其中,属于同一条实际链路的服务的链路标识相同;根据每个服务的链路标识、服务标识和上游服务标识,得到每个服务的服务信息;将每个服务的服务信息分类存储至第一数据库中。
在一个实施例中,链路超时检测装置还包括第二存储模块,用于获取实际链路中的每个服务的预设超时时间;将每个服务的预设超时时间存储至第二数据库中。
在一个实施例中,结果生成模块703,还用于当待检测链路中上游服务的预设超时时间大于下游服务的预设超时时间时,则确认待检测链路的超时时间设置成功;当待检测链路中上游服务的预设超时时间小于或者等于下游服务的预设超时时间时,则确认待检测链路的超时时间设置失败。
在一个实施例中,链路超时检测装置还包括报告发送模块,用于根据超时时间设置失败的链路和链路中的每个服务的预设超时时间,生成链路超时检测报告;将链路超时检测报告发送至对应的用户终端。
关于链路超时检测装置的具体限定可以参见上文中对于链路超时检测方法的限定,在此不再赘述。上述链路超时检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储服务的服务信息、预设超时时间等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种链路超时检测方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种链路超时检测方法,其特征在于,所述方法包括:
根据第一数据库,生成待检测链路;所述第一数据库中存储有实际链路中的多个服务的服务信息,所述待检测链路由所述服务信息中的链路标识相同的多个服务,按照所述多个服务之间的依赖关系所组成;
从第二数据库中获取所述待检测链路中的每个服务的预设超时时间;所述第二数据库中存储有多个服务的预设超时时间;
根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果;
所述根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果,包括:
当所述待检测链路中每个上游服务的预设超时时间均大于每个上游服务的下游服务的预设超时时间时,则确认所述待检测链路的超时时间设置成功。
2.根据权利要求1所述的方法,其特征在于,所述根据第一数据库,生成待检测链路,包括:
从所述第一数据库中,筛选出所述服务信息中的链路标识相同的多个服务;
根据所述多个服务的服务信息中的服务标识和上游服务标识,确定所述多个服务之间的依赖关系;
按照所述依赖关系,将所述多个服务进行组合,得到所述待检测链路。
3.根据权利要求2所述的方法,其特征在于,所述根据所述多个服务的服务信息中的服务标识和上游服务标识,确定所述多个服务之间的依赖关系,包括:
按照下游服务的服务信息中的上游服务标识与所述下游服务的上游服务的服务信息中的服务标识相同的关系,基于所述多个服务的服务信息中的服务标识和上游服务标识,确定所述多个服务之间的依赖关系。
4.根据权利要求2所述的方法,其特征在于,在根据第一数据库,生成待检测链路之前,还包括:
获取实际链路中的每个服务的链路标识、服务标识和上游服务标识;其中,属于同一条实际链路的服务的链路标识相同;
根据所述每个服务的链路标识、服务标识和上游服务标识,得到所述每个服务的服务信息;
将所述每个服务的服务信息分类存储至所述第一数据库中。
5.根据权利要求1所述的方法,其特征在于,在从第二数据库中获取所述待检测链路中的每个服务的预设超时时间之前,还包括:
获取实际链路中的每个服务的预设超时时间;
将所述每个服务的预设超时时间存储至所述第二数据库中。
6.根据权利要求1所述的方法,其特征在于,所述根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果,还包括:
当所述待检测链路中上游服务的预设超时时间小于或者等于下游服务的预设超时时间时,则确认所述待检测链路的超时时间设置失败。
7.根据权利要求6所述的方法,其特征在于,在确认所述待检测链路的超时时间设置失败之后,还包括:
根据超时时间设置失败的链路和所述链路中的每个服务的预设超时时间,生成链路超时检测报告;
将所述链路超时检测报告发送至对应的用户终端。
8.一种链路超时检测装置,其特征在于,所述装置包括:
链路生成模块,用于根据第一数据库,生成待检测链路;所述第一数据库中存储有实际链路中的多个服务的服务信息,所述待检测链路由所述服务信息中的链路标识相同的多个服务,按照所述多个服务之间的依赖关系所组成;
时间获取模块,用于从第二数据库中获取所述待检测链路中的每个服务的预设超时时间;所述第二数据库中存储有多个服务的预设超时时间;
结果生成模块,用于根据所述待检测链路中的每个服务的预设超时时间,生成对所述待检测链路的超时检测结果;
所述结果生成模块,还用于当所述待检测链路中每个上游服务的预设超时时间均大于每个上游服务的下游服务的预设超时时间时,则确认所述待检测链路的超时时间设置成功。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111305220.1A CN113965489B (zh) | 2021-11-05 | 2021-11-05 | 链路超时检测方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111305220.1A CN113965489B (zh) | 2021-11-05 | 2021-11-05 | 链路超时检测方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113965489A CN113965489A (zh) | 2022-01-21 |
CN113965489B true CN113965489B (zh) | 2023-05-05 |
Family
ID=79469323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111305220.1A Active CN113965489B (zh) | 2021-11-05 | 2021-11-05 | 链路超时检测方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113965489B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109451020A (zh) * | 2018-11-06 | 2019-03-08 | 深圳前海微众银行股份有限公司 | 超时管理方法、设备及计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2662818A1 (en) * | 2012-05-07 | 2013-11-13 | Alcatel Lucent | Method, transaction server and account server for electronic payment in a computer network |
US11354299B2 (en) * | 2018-10-19 | 2022-06-07 | Oracle International Corporation | Method and system for a high availability IP monitored by both OS/network and database instances |
CN110262972B (zh) * | 2019-06-17 | 2020-12-08 | 中国科学院软件研究所 | 一种面向微服务应用的失效测试工具及方法 |
CN112543152A (zh) * | 2020-12-08 | 2021-03-23 | 贝壳技术有限公司 | 自适应调整服务超时时间的方法和装置 |
CN112783739B (zh) * | 2021-01-05 | 2022-08-19 | 广州品唯软件有限公司 | 超时时间显示方法、装置、系统、计算机设备和存储介质 |
CN113438130B (zh) * | 2021-06-23 | 2022-11-11 | 中国工商银行股份有限公司 | 基于微服务的超时监测方法及装置 |
-
2021
- 2021-11-05 CN CN202111305220.1A patent/CN113965489B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109451020A (zh) * | 2018-11-06 | 2019-03-08 | 深圳前海微众银行股份有限公司 | 超时管理方法、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113965489A (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110765091B (zh) | 对账方法和系统 | |
WO2020029375A1 (zh) | 接口测试方法、系统、计算机设备和存储介质 | |
CN108829584B (zh) | 业务逻辑接口mock测试方法及系统 | |
CN111475376B (zh) | 处理测试数据的方法、装置、计算机设备和存储介质 | |
CN111026767B (zh) | 区块链的数据存储方法、装置及硬件设备 | |
US11809406B2 (en) | Event records in a log file | |
CN112182089B (zh) | 基于数据仓库模型的报表生成方法、装置和设备 | |
CN107203464B (zh) | 业务问题的定位方法以及装置 | |
CN113704790A (zh) | 一种异常日志信息汇总方法及计算机设备 | |
CN116204438A (zh) | 测试用例生成方法、自动化测试方法和相关装置 | |
CN111400178A (zh) | 接口自动造数方法、装置、计算机设备及存储介质 | |
CN112395339B (zh) | 系统间数据准入校验方法、装置、计算机设备和存储介质 | |
CN112202647B (zh) | 区块链网络中的测试方法、装置及测试设备 | |
CN113760775A (zh) | 一种消息自动测试方法及装置 | |
CN113965489B (zh) | 链路超时检测方法、装置、计算机设备和存储介质 | |
CN115510366A (zh) | 业务消息推送方法、装置、计算机设备和存储介质 | |
CN111884932B (zh) | 一种链路确定方法、装置、设备和计算机可读存储介质 | |
CN112258184B (zh) | 冻结区块链网络的方法、装置、电子设备及可读存储介质 | |
CN109240906B (zh) | 数据库配置信息适配方法、装置、计算机设备和存储介质 | |
CN110489208B (zh) | 虚拟机配置参数核查方法、系统、计算机设备和存储介质 | |
CN110597572B (zh) | 一种服务调用关系分析方法和计算机系统 | |
CN111813833A (zh) | 一种实时二度通联关系数据挖掘的方法 | |
CN117234738B (zh) | 基于人工智能模型的区块链系统和智能合约处理方法 | |
CN112737812B (zh) | 一种数据传输方法及装置 | |
CN111711537B (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 |