CN115543668A - 服务链路追踪方法、设备、存储介质及程序产品 - Google Patents
服务链路追踪方法、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN115543668A CN115543668A CN202211136211.9A CN202211136211A CN115543668A CN 115543668 A CN115543668 A CN 115543668A CN 202211136211 A CN202211136211 A CN 202211136211A CN 115543668 A CN115543668 A CN 115543668A
- Authority
- CN
- China
- Prior art keywords
- server
- target
- service
- identifier
- bitmap
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0709—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0778—Dumping, i.e. gathering error/state information after a fault for later diagnosis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种服务链路追踪方法、设备、存储介质及程序产品。本申请涉及大数据、云计算、信息安全等技术领域,也可用于金融或除金融领域以外的任意领域。该方法包括:根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识;针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap;根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。本申请的方法,简便、高效地实现服务器的链路追踪。
Description
技术领域
本申请涉及金融科技领域或其他相关领域技术,尤其涉及一种服务链路追踪方法、设备、存储介质及程序产品。
背景技术
随着互联网业务的飞速发展,软件架构经过了从单体服务到分布式服务的演进,变得异常复杂。为了适应海量用户的高并发请求,就要求系统应用的部署分布式化。一个海量用户的高并发的系统动辄上百甚至上千的服务器,其中还会涉及到多个应用间的服务调用,这就构成了繁杂的分布式服务系统。
然而,基于上述分布式服务系统,如果服务请求异常,是无法快速定位出具体是哪台服务器处理异常了,如果借住日志逐个服务器进行排查,效率非常低。为了解决效率低的问题,一般采用现有的链路追踪系统进行排查。
但是,现有的链路追踪系统中,有的开源、有的不开源,使用限制较多;还有的需要梳理服务的链路(即Trace,指一个请求经过所有服务的路径,需要弄清楚每一个请求具体的服务路径是怎样的,服务间的相互调用关系)和标签(即Span,当在链路中的一个服务需要向下调用两个服务时,标识出向下这两个服务调用父子关系;其中,同一层级的父节点Id(即parentId)相同,子节点(即spanId)不同,spanId从小到大表示服务调用的顺序),如果有成百上千,甚至上万的服务,在梳理及配置上是很大的工作量。并且,现有的链路追踪系统都比较复杂庞大,在部署上、使用上都有着较高的复杂性。因此,现有技术无法简便、高效地实现服务器的链路追踪。
发明内容
本申请提供一种服务链路追踪方法、设备、存储介质及程序产品,用以解决现有技术无法简便、高效地实现服务器的链路追踪的问题。
一方面,本申请提供一种服务链路追踪方法,包括:
根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识;
针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap;
根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。
另一方面,本申请提供一种服务链路追踪设备,包括:
获取模块,用于根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识;
存储模块,用于针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap;
链路确定模块,用于根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。
再一方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如一方面任一项所述的方法。
又一方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如一方面任一项所述的方法。
另一方面,计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如一方面任一项所述的方法。
本申请提供的服务链路追踪方法、设备、存储介质及程序产品,首先根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识;然后针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap;根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。因此,通过获取服务调用的服务器的IP地址对应的服务器标识,然后基于Redis,建立服务器标识与bitmap数据结构的关系,即可实现服务器的链路追踪,无需关注服务间的调用关系,实现上简单可行,高效易用。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的服务链路追踪方法的场景示意图;
图2为本申请实施例提供的服务链路追踪方法的流程示意图;
图3为本申请实施例提供的bitmap数据结构的示意图;
图4为本申请再一实施例提供的服务链路追踪方法的场景示意图;
图5为本申请另一实施例提供的bitmap数据结构的示意图;
图6为本申请实施例提供的服务器映射配置的示意图;
图7为本申请另一实施例提供的服务链路追踪方法的场景示意图;
图8为本申请实施例提供的服务链路追踪设备的结构示意图;
图9为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
首先对本申请所涉及的名词进行解释:
链路追踪:将一次服务调用的调用链路进行还原。其中,本申请的链路追踪主要是指对服务器链路的还原,即一次服务调用具体经过了哪些服务器的处理。
奇偶标识位:通过服务器的IP地址对应用中涉及的服务器进行映射标识,每一个服务器映射两个标识位:一个奇数位,用于标识请求服务器标识;一个偶数位,标识返回服务器标识。
针对上述中现有技术无法简便、高效地实现服务器的链路追踪的问题,本申请的技术构思是利用Redis的高性能以及bitmap的高空间利用率,基于Redis,建立服务器标识与bitmap数据结构的关系,即可实现服务器的链路追踪,无需关注服务间的调用关系,在实现上简单易行,部署上轻量便捷,在运行上高效。
需要说明的是,本申请提供的服务链路追踪方法、设备、存储介质及程序产品可用于大数据、云计算、信息安全等技术领域,也可用于金融或除金融领域以外的任意领域。本申请提供的服务链路追踪方法、设备、存储介质及程序产品应用领域不作限定。下述以一次服务请求(或一个服务调用)为例,对服务链路追踪方法进行示例性说明。
在实际应用中,参见图1所示,图1为本申请实施例提供的服务链路追踪方法的场景示意图。该服务链路追踪方法的执行主体可以是服务链路追踪设备(或服务链路追踪系统),该服务链路追踪设备可以部署在电子设备中。基于分布式服务系统,每个应用涉及多个服务器,比如,应用1对应服务器组1,应用2对应服务器组2,…,应用n对应服务器组n等。
在一次服务请求中,可能涉及到多个应用间的服务调用,比如服务调用发起,即可确定涉及到哪些应用间的服务调用,且涉及到的每个应用中的哪些服务器,在服务调用时,该服务链路追踪设备中可以获取到调用服务器的IP地址,通过服务器映射,可以通过IP地址获取到服务器标识,然后通过Redis操作,将服务器标识存储到bitmap数据结构中,生成目标bitmap,再根据目标bitmap中的比特索引以及比特索引对应的存储值,确定服务链路,并以此定位服务链路中的各个服务器,即确定当前次服务调用具体经过了哪些服务器的处理。
本申请提供的数据传输的方法,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的服务链路追踪方法的流程示意图,该方法可以包括:
S201、根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识。
本实施例中,执行主体可以是服务链路追踪设备,该服务链路追踪设备可以部署在电子设备中,这里的电子设备可以是终端设备或服务器,在此不做具体限定。其中,以终端设备为例,该终端设备可以是计算机,用于对服务请求或调用进行链路追踪处理,进而确定一个请求经过所有服务器的路径,如果请求异常,能够快速定位出具体是哪台服务器处理异常了。
在一种可能的设计中,该服务链路追踪方法还可以包括:
根据服务请求,确定所述服务调用的各个目标应用中的目标服务器以及相应的目标IP地址。
具体地,基于分布式服务系统,在服务调用发起时,即发生服务请求时,可以根据该服务,确定涉及到的应用(这里指目标应用)以及应用间调用的服务器(这里指目标服务器),根据涉及到的每个应用中调用的服务器的IP地址,通过建立的服务器的映射关系,即可获取调用的服务器的服务器标识,这里指目标服务器标识。
S202、针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap。
本实施例中,Redis作为一种分布式缓存,本身有着极高的性能,一般统计Redis读的速度在11W次/秒,写的速度是8万次/秒。基于Redis支持bitmap数据类型这一特点,可以通过Redis操作,将各个目标应用调用的各个目标服务器对应的目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap。
其中,bitmap的基本原理就是用一个bit来标记某个元素对应的value,而key即是该元素。参见图3所示,图3为本申请实施例提供的bitmap数据结构的示意图。该bitmap的长度为n,其中,0、1、2、…、n用于表示bitmap数据结构的比特(即bit)索引即bitmap的key,可以作为服务器标识;每个bit存储的值(比如0或1)做作为bitmap的value。
在计算机中1字节为8bit,如果使用bitmap进行数据存储,1字节空间即可存储8个数据,举例说明:1个int类型数据占用4个字节即32bit,如果要存储1亿的数据量,普通的存储模式需要381.5M,而使用bitmap存储则只需11.9M。所以基于bitmap来存储海量用户的请求链路在空间上是具有明显优势的,能够节约大量的存储空间,而且并不需要传统链路追踪系统存储需要的那些中间件。
示例性的,参见图4所示,图4为本申请再一实施例提供的服务链路追踪方法的场景示意图。在调用服务时,可以将该服务的唯一标识作为Redis的KEY(即标识),bitmap数据结构作为Redis的VALUE(即值)进行数据存储。
S203、根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。
本实施例中,在bitmap的数据结构中,每一个bit存储的值只有0和1,即可通过0和1来标识每一个bit上是否有值,参见图5所示,图5为本申请另一实施例提供的bitmap数据结构的示意图。在bitmap中位置1、2、4、n上的值为1,即标识该bitmap存储了1、2、4、n这些元素的数据。
具体地,通过奇偶标识法,根据比特索引,确定服务器标识,并基于比特索引对应的存储值,确定该服务器标识对应的值。比如,图5中在位置1上的值为1,说明对应的服务器标识上存储了值1。
本实施例提供的服务链路追踪方法,首先根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识;然后针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap;根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。因此,通过获取服务调用的服务器的IP地址对应的服务器标识,然后基于Redis,建立服务器标识与bitmap数据结构的关系,即可实现服务器的链路追踪,无需关注服务间的调用关系,实现上简单可行,高效易用。
在一种可能的设计中,所述服务链路追踪方法,还可以通过以下步骤实现:
针对每个应用,根据所述应用对应的各个服务器的IP地址,对各个所述服务器进行标识,得到各个所述服务器的IP地址与相应的服务器标识之间的映射关系。
其中,所述服务器标识包括偶数位标识和奇数位标识;一个服务器标识的偶数位和奇数位为相邻的两个标识位;所述偶数位标识用于表示服务请求的位置,所述奇数位标识用于表示服务返回的位置;或者,所述奇数位标识用于表示服务请求的位置,所述偶数位标识用于表示服务返回的位置。
本实施例中,通过对服务器进行分组映射,采用奇偶标识位法,能够满足请求和返回的双向存储。具体地,将每个应用中的所有服务器作为一组,如图1中的应用1对应服务器组1、应用2对应服务器组2、…、应用n对应服务器组n,然后针对每个服务器组进行标识映射,即对每个服务器组中的每个服务器进行标识,将该标识与服务器的IP地址建立映射关系。其中,每个服务器标识对应两个标识位,即相邻的偶数位和奇数位,所以每个服务器标识包括偶数位标识和奇数位标识,该偶数位标识用于表示服务请求的位置或服务返回的位置中的一个,相应的,该奇数位标识用于表示服务返回的位置或服务请求的位置中的一个。
在一种可能的设计中,所述针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap,可以通过以下步骤实现:
步骤a1、将所述服务对应的服务唯一标识作为Redis中存储的标识;
步骤a2、根据Redis中存储的标识,获取Redis中存储的值;
步骤a3、通过所述Redis中存储的值,将各个所述目标应用中各个所述目标服务器标识存储到所述bitmap数据结构中,生成与所述服务唯一标识对应的目标bitmap。
其中,目标bitmap中的各个比特索引与各个所述目标服务器的标识位一一对应,所述标识位包括偶数位和奇数位;一个服务器标识的偶数位和奇数位为相邻的两个标识位。
本实施例中,通过Redis操作,将服务器标识存储到bitmap数据结构中,即可获取到一个服务调用的服务器链路追踪(即服务链路追踪)。其中,每一个服务请求都可以通过该服务的唯一标识生成一个bitmap的数据结构(这里指目标bitmap),数据结构的索引即为所有相关应用服务器的标识位。
在一种可能设计中,所述通过所述Redis中存储的值,将各个所述目标应用中各个所述目标服务器标识存储到所述bitmap数据结构中,生成与所述服务唯一标识对应的目标bitmap,可以通过以下步骤实现:
步骤a31、按照各个所述目标应用,对所述bitmap数据结构中的索引进行分组;其中,每个索引组对应一个目标应用的所有服务器;
步骤a32、针对每个索引组,通过所述Redis中存储的值,根据相应的所述目标应用中各个所述目标服务器标识,对所述bitmap数据结构中的所述索引组中各个比特进行数据存储,生成与所述服务唯一标识对应的目标bitmap。
本实施例中,bitmap的索引可按服务器分组同样分成不同的组,每一组都对应着相关应用的所有服务器。其中,一个成功的服务调用,在bitmap存储中必定是每个分组都有且有一组奇偶相邻的两个bit的值为1。
具体地,无需关注服务的调用层级关系,只需要通过服务器IP地址对各应用的服务器进行分组标识。示例性的,参见图6所示,图6为本申请实施例提供的服务器映射配置的示意图。一个应用中有n台服务器(如服务器0、服务器1、服务器2、…、服务器n),对每台服务器进行映射标识,一台服务器有两个标识:偶数位标识和奇数位标识,偶数位标识表示服务请求的位置,奇数位标识表示服务返回的位置,如图5所示,每一个应用的所有的服务器都进行如上的映射,且应用将服务器的标识都是递增的,如一个应用最后一个服务器奇数标识位为2n+1,那下一个应用第一个服务器偶数位标识即为2n+2,依次递增。如:服务器0映射的偶数位标识为0、奇数位标识为1,服务器2映射的偶数位标识为2、奇数位标识为3,服务器2映射的偶数位标识为4、奇数位标识为5,…,服务器n映射的偶数位标识为2n、奇数位标识为2n+1。
在一种可能的设计中,所述根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以定位服务链路中的各个服务器,可以通过以下步骤实现:
步骤b1、根据目标bitmap中的比特索引,确定相应的目标服务器标识;
步骤b2、根据所述目标服务器标识以及所述比特索引对应的存储值,确定所述服务对应的服务路径。
其中,所述索引对应的存储值用于表示是否请求或返回相应的目标服务器。
本实施例中,结合图7所示,图7为本申请另一实施例提供的服务链路追踪方法的场景示意图。首先对每个应用的所有服务器进行分组,无需关注服务的调用层级关系,只需要通过服务器IP地址对各应用的服务器进行分组标识;当服务调用发起时,即可确定该服务所涉及的应用以及应用间调用的服务器,在服务调用时,该服务链路追踪设备的程序中可以获取到调用服务器的IP地址,通过服务器映射,可通过IP地址获取到服务器标识。通过Redis操作,将服务器标识存储到bitmap数据结构中,即可获取到一个服务调用的服务器链路追踪。即获取到该服务经过了哪些服务器。
在一种可能的设计中,该服务链路追踪方法还可以通过以下步骤实现:
步骤c1、若所述服务的请求异常,根据所述服务链路中服务器标识以及对应的存储值,确定存在处理异常的服务器标识;
步骤c2、根据所述存在失败问题的服务器标识,通过所述映射关系,获取所述存在处理异常的服务器标识对应的待追踪服务器的IP地址;
步骤c3、根据所述待追踪服务器的IP地址,查找相应的服务器。
本实施例中,如果该服务的请求异常,还可以追踪到是哪些服务器处理异常导致的服务请求异常。具体地,通过读取该服务链路中bitmap数据结构中的索引以及索引对应的存储值,结合索引与服务器标识(偶数位标识以及奇数位标识)之间的对应关系,能够查找出处理异常的服务器标识,并将处理异常的服务器标识对应的服务器作为待追踪服务器。然后通过服务器标识与服务器的IP地址之间的映射关系,获取到该待追踪服务器的IP地址,实现了服务异常的快速追踪,且追踪的操作步骤便捷,进而能够尽快处理异常问题。
在一种可能的设计中,所述根据所述服务链路中服务器标识以及对应的存储值,确定存在失败问题的服务器标识,可以通过以下步骤实现:
步骤c11、针对所述服务链路中各个服务器标识,确定所述服务器标识中的偶数位标识和奇数位标识是否为不同值;
步骤c12、若为不同值,则确定所述服务器标识为存在失败问题的服务器标识。
本实施例中,一个成功的服务调用,在bitmap存储中必定是每个分组都有且有一组奇偶相邻的两个bit的值为1。因此,当一组或多组中存在一个服务器标识对应的奇偶相邻的两个bit的值不同,比如以一组中的服务器为例,偶数位标识为1,奇数位标识为0,则说明该服务经过了该组对应的应用的服务器0请求,但未经过服务器0返回,导致服务异常,所以该服务器0可以作为待追踪服务器,通过查找其对应的IP地址,找到该服务器0,进而查看该服务器0在调用时出现了哪些问题,进而快速解决服务异常的问题。
因此,本申请将bitmap的数据结构引入到链路追踪领域,通过对服务器进行分组映射,结合奇偶标识位法,能够满足请求和返回的双向存储,进而确定在服务调用时经过的服务器的路径。本申请并不依赖传统链路追踪系统中设计到的其他任何中间件或组件,只是利用Redis的高性能、bitmap的高空间利用率,在实现上简单易行,部署上轻量便捷,在运行上高效,进而实现了便捷、快速地定位服务器。
为了实现所述图像处理方法,本实施例提供了一种服务链路追踪设备,参见图8,图8为本申请实施例提供的服务链路追踪设备的结构示意图;所述服务链路追踪设备,包括:获取模块801、存储模块802以及链路确定模块803。
获取模块801,用于根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识;
存储模块802,用于针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap;
链路确定模块803,用于根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。
本实施例中,通过获取模块801、存储模块802以及链路确定模块803,用于根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识;然后针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap;根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。因此,通过获取服务调用的服务器的IP地址对应的服务器标识,然后基于Redis,建立服务器标识与bitmap数据结构的关系,即可实现服务器的链路追踪,无需关注服务间的调用关系,实现上简单可行,高效易用。
本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
在一种可能的设计中,所述服务链路追踪设备还包括:映射模块;映射模块,用于:
针对每个应用,根据所述应用对应的各个服务器的IP地址,对各个所述服务器进行标识,得到各个所述服务器的IP地址与相应的服务器标识之间的映射关系;
其中,所述服务器标识包括偶数位标识和奇数位标识;一个服务器标识的偶数位和奇数位为相邻的两个标识位;所述偶数位标识用于表示服务请求的位置,所述奇数位标识用于表示服务返回的位置;或者,所述奇数位标识用于表示服务请求的位置,所述偶数位标识用于表示服务返回的位置。
在一种可能的设计中,所述存储模块,具体用于:
将所述服务对应的服务唯一标识作为Redis中存储的标识;
根据Redis中存储的标识,获取Redis中存储的值;
通过所述Redis中存储的值,将各个所述目标应用中各个所述目标服务器标识存储到所述bitmap数据结构中,生成与所述服务唯一标识对应的目标bitmap;
其中,目标bitmap中的各个比特索引与各个所述目标服务器的标识位一一对应,所述标识位包括偶数位和奇数位。
在一种可能的设计中,所述存储模块,具体用于:
按照各个所述目标应用,对所述bitmap数据结构中的索引进行分组;其中,每个索引组对应一个目标应用的所有服务器;
针对每个索引组,通过所述Redis中存储的值,根据相应的所述目标应用中各个所述目标服务器标识,对所述bitmap数据结构中的所述索引组中各个比特进行数据存储,生成与所述服务唯一标识对应的目标bitmap。
在一种可能的设计中,所述索引对应的存储值用于表示是否请求或返回相应的目标服务器;所述服务链路确定模块,具体用于:
根据目标bitmap中的比特索引,确定相应的目标服务器标识;
根据所述目标服务器标识以及所述比特索引对应的存储值,确定所述服务对应的服务路径。
在一种可能的设计中,所述服务链路追踪设备还包括:异常定位模块;异常定位模块,用于:
在所述服务的请求异常时,根据所述服务链路中服务器标识以及对应的存储值,确定存在处理异常的服务器标识;
根据所述存在失败问题的服务器标识,通过所述映射关系,获取所述存在处理异常的服务器标识对应的待追踪服务器的IP地址;
根据所述待追踪服务器的IP地址,查找相应的服务器。
在一种可能的设计中,所述异常定位模块,具体用于:
针对所述服务链路中各个服务器标识,确定所述服务器标识中的偶数位标识和奇数位标识是否为不同值;
若为不同值,则确定所述服务器标识为存在失败问题的服务器标识。
在一种可能的设计中,所述服务链路追踪设备还包括:确定模块;确定模块,用于:
根据服务请求,确定所述服务调用的各个目标应用中的目标服务器以及相应的目标IP地址。
为了实现上述实施例的方法,本实施例提供了一种电子设备。图9为本申请实施例提供的电子设备的结构示意图。如图9所示,本实施例的电子设备90包括:处理器901以及与所述处理器通信连接的存储器902;其中,存储器902,用于存储计算机执行指令;处理器901,用于执行存储器存储的计算机执行指令,以实现上述实施例中所执行的各个步骤。具体可以参见前述方法实施例中的相关描述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的方法。
本申请实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(PeripheralComponent,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种服务链路追踪方法,其特征在于,所述方法包括:
根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识;
针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap;
根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对每个应用,根据所述应用对应的各个服务器的IP地址,对各个所述服务器进行标识,得到各个所述服务器的IP地址与相应的服务器标识之间的映射关系;
其中,所述服务器标识包括偶数位标识和奇数位标识;一个服务器标识的偶数位和奇数位为相邻的两个标识位;所述偶数位标识用于表示服务请求的位置,所述奇数位标识用于表示服务返回的位置;或者,所述奇数位标识用于表示服务请求的位置,所述偶数位标识用于表示服务返回的位置。
3.根据权利要求2所述的方法,其特征在于,所述针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap,包括:
将所述服务对应的服务唯一标识作为Redis中存储的标识;
根据Redis中存储的标识,获取Redis中存储的值;
通过所述Redis中存储的值,将各个所述目标应用中各个所述目标服务器标识存储到所述bitmap数据结构中,生成与所述服务唯一标识对应的目标bitmap;
其中,目标bitmap中的各个比特索引与各个所述目标服务器的标识位一一对应,所述标识位包括偶数位和奇数位。
4.根据权利要求3所述的方法,其特征在于,所述通过所述Redis中存储的值,将各个所述目标应用中各个所述目标服务器标识存储到所述bitmap数据结构中,生成与所述服务唯一标识对应的目标bitmap,包括:
按照各个所述目标应用,对所述bitmap数据结构中的索引进行分组;其中,每个索引组对应一个目标应用的所有服务器;
针对每个索引组,通过所述Redis中存储的值,根据相应的所述目标应用中各个所述目标服务器标识,对所述bitmap数据结构中的所述索引组中各个比特进行数据存储,生成与所述服务唯一标识对应的目标bitmap。
5.根据权利要求3或4所述的方法,其特征在于,所述索引对应的存储值用于表示是否请求或返回相应的目标服务器;所述根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以定位服务链路中的各个服务器,包括:
根据目标bitmap中的比特索引,确定相应的目标服务器标识;
根据所述目标服务器标识以及所述比特索引对应的存储值,确定所述服务对应的服务路径。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述服务的请求异常,根据所述服务链路中服务器标识以及对应的存储值,确定存在处理异常的服务器标识;
根据所述存在失败问题的服务器标识,通过所述映射关系,获取所述存在处理异常的服务器标识对应的待追踪服务器的IP地址;
根据所述待追踪服务器的IP地址,查找相应的服务器。
7.根据权利要求6所述的方法,其特征在于,所述根据所述服务链路中服务器标识以及对应的存储值,确定存在失败问题的服务器标识,包括:
针对所述服务链路中各个服务器标识,确定所述服务器标识中的偶数位标识和奇数位标识是否为不同值;
若为不同值,则确定所述服务器标识为存在失败问题的服务器标识。
8.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
根据服务请求,确定所述服务调用的各个目标应用中的目标服务器以及相应的目标IP地址。
9.一种服务链路追踪设备,其特征在于,包括:
获取模块,用于根据在服务调用时获取的各个目标应用调用各个目标服务器的目标IP地址,通过映射关系,获取相应的目标服务器标识;
存储模块,用于针对各个所述目标应用,通过存储系统Redis,将各个所述目标服务器标识存储到位图bitmap数据结构中,生成目标bitmap;
链路确定模块,用于根据目标bitmap中的比特索引以及所述比特索引对应的存储值,确定服务链路,用以支持定位服务链路中的各个服务器。
10.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至8任一项所述的方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211136211.9A CN115543668A (zh) | 2022-09-19 | 2022-09-19 | 服务链路追踪方法、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211136211.9A CN115543668A (zh) | 2022-09-19 | 2022-09-19 | 服务链路追踪方法、设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115543668A true CN115543668A (zh) | 2022-12-30 |
Family
ID=84727235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211136211.9A Pending CN115543668A (zh) | 2022-09-19 | 2022-09-19 | 服务链路追踪方法、设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543668A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116346473A (zh) * | 2023-03-29 | 2023-06-27 | 贝壳找房(北京)科技有限公司 | 调用链路的识别方法、设备、存储介质及计算机程序产品 |
-
2022
- 2022-09-19 CN CN202211136211.9A patent/CN115543668A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116346473A (zh) * | 2023-03-29 | 2023-06-27 | 贝壳找房(北京)科技有限公司 | 调用链路的识别方法、设备、存储介质及计算机程序产品 |
CN116346473B (zh) * | 2023-03-29 | 2024-03-26 | 贝壳找房(北京)科技有限公司 | 调用链路的识别方法、设备、存储介质及计算机程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297689B (zh) | 智能合约执行方法、装置、设备及介质 | |
CN107483221B (zh) | 一种跨应用问题排查方法、装置及系统 | |
CN109710263B (zh) | 代码的编译方法、装置、存储介质及电子设备 | |
CN111241177A (zh) | 数据采集方法、系统及网络设备 | |
US10635724B2 (en) | Analysis of data utilization | |
CN115543668A (zh) | 服务链路追踪方法、设备、存储介质及程序产品 | |
US11048557B2 (en) | Methods and modules relating to allocation of host machines | |
US10719497B2 (en) | Utilization of optimized ordered metadata structure for container-based large-scale distributed storage | |
CN111124883B (zh) | 一种基于树形表格的测试用例库引入方法、系统及设备 | |
CN117493319A (zh) | 数据去重方法、装置、电子设备及存储介质 | |
US8819494B2 (en) | Automatically changing parts in response to tests | |
CN116132448B (zh) | 基于人工智能的数据分流方法及相关设备 | |
CN111930363A (zh) | 区块接口代码生成方法、及装置 | |
CN116467315A (zh) | 行为数据的分析方法、装置、设备及存储介质 | |
CN113282347B (zh) | 插件运行方法、装置、设备及存储介质 | |
CN111209304B (zh) | 数据处理方法、装置及系统 | |
CN110209666B (zh) | 一种数据存储方法及终端设备 | |
CN113760237A (zh) | 编译地址的更新方法、装置、终端设备及可读存储介质 | |
CN109783331B (zh) | 数据库集群的压力测试方法和装置 | |
CN114625595B (zh) | 一种业务系统动态配置信息的复核方法、装置和系统 | |
CN112561695B (zh) | 在区块链中并发执行交易的方法和装置 | |
CN116414771A (zh) | 数据迁移方法、装置、电子设备和存储介质 | |
CN114205412A (zh) | 信息推送方法、装置、服务器及存储介质 | |
CN114218281A (zh) | 唯一识别号的生成方法及装置 | |
CN114422398A (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 |