CN111813418A - 分布式链路跟踪方法、装置、计算机设备及存储介质 - Google Patents

分布式链路跟踪方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN111813418A
CN111813418A CN202010622513.1A CN202010622513A CN111813418A CN 111813418 A CN111813418 A CN 111813418A CN 202010622513 A CN202010622513 A CN 202010622513A CN 111813418 A CN111813418 A CN 111813418A
Authority
CN
China
Prior art keywords
service
sub
link
module
link tracking
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.)
Granted
Application number
CN202010622513.1A
Other languages
English (en)
Other versions
CN111813418B (zh
Inventor
罗俊峰
吴志民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Saiante Technology Service Co Ltd
Original Assignee
Ping An International Smart City Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An International Smart City Technology Co Ltd filed Critical Ping An International Smart City Technology Co Ltd
Priority to CN202010622513.1A priority Critical patent/CN111813418B/zh
Publication of CN111813418A publication Critical patent/CN111813418A/zh
Application granted granted Critical
Publication of CN111813418B publication Critical patent/CN111813418B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0677Localisation of faults
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例属于云技术领域,应用于智慧安防领域中,涉及一种分布式链路跟踪方法,包括将链路模组部署至Kubernetes中;基于所述链路模组,记录当前服务中每个子服务的调用数据,根据所述调用数据确定每个所述子服务之间的关联关系;根据所述关联关系生成所述服务的链路跟踪信息,存储所述链路跟踪信息;在接收到链路查看指令时,以图像的形式发送所述链路跟踪信息。本申请还提供一种分布式链路跟踪装置、计算机设备及存储介质。此外,本申请还涉及区块链技术,所述链路跟踪信息可存储于区块链中。本申请实现了在容器集群中对分布式微服务问题的快速定位。

Description

分布式链路跟踪方法、装置、计算机设备及存储介质
技术领域
本申请涉及云技术领域,尤其涉及一种分布式链路跟踪方法、装置、计算机设备及存储介质。
背景技术
随着互联网的快速发展,***的架构也越来越复杂,随着为应对高并发大数据的量需求的***出现,微服务架构也随之应运而生。当前,为了解决微服务架构难以定位出现的***问题(功能问题或性能问题)所在的模块和代码块的问题,通常采用Spring CloudSleuth框架。Spring Cloud Sleuth框架可以为服务之间调用提供链路追踪。
然而随着容器技术和DevOps的出现,为解决微服务中应用部署和运维难以管理的问题,微服务架构也开始和容器技术结合起来。在微服务技术与容器技术结合的基础上,***问题的定位也随之变得复杂,传统的spring cloud sleuth框架已经无法满足当前的链路跟踪需求。由此导致在数十个、上百个pod组成的集群中,无法快速高效地找到出现问题的微服务以及微服务所在的pod的技术问题。
发明内容
本申请实施例的目的在于提出一种分布式链路跟踪方法、装置、计算机设备及存储介质,以解决微服务***问题定位困难的技术问题。
为了解决上述技术问题,本申请实施例提供一种分布式链路跟踪方法,采用了如下所述的技术方案:
将链路模组部署至Kubernetes中;
基于所述链路模组,记录当前服务中每个子服务的调用数据,根据所述调用数据确定每个所述子服务之间的关联关系;
根据所述关联关系生成所述服务的链路跟踪信息,存储所述链路跟踪信息;
在接收到链路查看指令时,以图像的形式发送所述链路跟踪信息。
进一步的,所述将链路模组部署至Kubernetes中的步骤具体包括:
在接收到部署指令时,获取所述部署指令对应的链路模组;
推送所述链路模组至镜像仓库,基于所述镜像仓库得到所述链路模组的***镜像;
基于helm指令在Kubernetes中部署所述***镜像。
进一步的,所述基于helm指令在Kubernetes中部署所述***镜像的步骤具体包括:
获取目标参数,基于***启动命令添加所述目标参数至所述***镜像中;
在得到所述目标参数添加后的***镜像时,基于helm指令将所述目标参数添加后的***镜像部署至Kubernetes中。
进一步的,在所述基于***启动命令添加所述目标参数至所述***镜像中的步骤之后还包括:
获取所述链路模组的下载地址;
配置所述下载地址至Kubernetes中的配置映射中,并将所述下载地址在所述***镜像的dockerfile文件中以变量引用的形式使用。
进一步的,所述根据所述调用数据确定每个所述子服务之间的关联关系的步骤具体包括:
获取所述调用数据中每个所述子服务的parentspandID;
根据所述parentspandID确定每个所述子服务之间的关联关系。
进一步的,所述根据所述parentspandID确定每个所述子服务之间的关联关系的步骤具体包括:
获取每个所述子服务的spanID;
根据所述parentspanID确定所述子服务的调用方,其中,所述子服务的parentspanID与所述子服务的调用方的spanID相同,在所述parentspanID为-1时,确定所述parentspanID对应的子服务为根节点服务。
进一步的,在所述存储所述链路跟踪信息的步骤之后还包括:
获取所述链路跟踪信息中每个所述子服务的duration字段;
根据所述duration字段确定在预设时间段内响应超时的子服务。
为了解决上述技术问题,本申请实施例还提供一种分布式链路跟踪装置,采用了如下所述的技术方案:
部署模块,用于将链路模组部署至Kubernetes中;
记录模块,用于基于所述链路模组,记录当前服务中每个子服务的调用数据,根据所述调用数据确定每个所述子服务之间的关联关系;
存储模块,用于根据所述关联关系生成所述服务的链路跟踪信息,存储所述链路跟踪信息;
发送模块,用于在接收到链路查看指令时,以图像的形式发送所述链路跟踪信息。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现上述分布式链路跟踪方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现上述分布式链路跟踪方法的步骤。
本申请通过将链路模组部署至Kubernetes中,以使部署完成的链路模组对当前服务的链路信息进行追踪,因此,在得到该链路模组时,则基于所述链路模组,记录当前服务中每个子服务的调用数据,其中,该调用数据则包括了当前服务中每个子服务的traceID、spanID、parentspandID和duration字段,根据该调用数据可以确定每个子服务对应的调用方,由此即可确定每个所述子服务之间的关联关系;接着根据所述关联关系生成所述服务的链路跟踪信息,链路跟踪信息即反应了当前服务中每个子服务之间的关联关系,根据该链路跟踪信息可以对一次服务中子服务之间的信息进行追踪;存储所述链路跟踪信息;在接收到链路查看指令时,以图像的形式发送所述链路跟踪信息,实现了在容器集群中对分布式微服务问题的快速定位,减少了问题定位的时长,提高了对微服务问题的定位及处理效率。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的分布式链路跟踪方法的一个实施例的流程图;
图3是根据本申请的分布式链路跟踪方法的一个链路跟踪信息示意图;
图4是根据本申请的分布式链路跟踪装置的一个实施例的结构示意图;
图5是根据本申请的计算机设备的一个实施例的结构示意图。
附图标记:分布式链路跟踪装置400、部署模块401、记录模块402、存储模块403以及发送模块404。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving PictureExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的分布式链路跟踪方法一般由服务器/终端设备执行,相应地,分布式链路跟踪装置一般设置于服务器/终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的分布式链路跟踪方法的一个实施例的流程图。所述的分布式链路跟踪方法,包括以下步骤:
步骤S201,将链路模组部署至Kubernetes中。
在本实施例中,在链路追踪之前,需要对链路模组进行部署,以便通过该链路模组对服务中每个子服务的调用数据进行获取及追踪。因此,在接收到部署指令时,则获取该部署指令对应的链路模组,其中,该链路模组包括代理子模组、收集子模组和存储子模组。基于该部署指令通过镜像将该代理子模组、收集子模组和存储子模组部署在Kubernetes中,其中,Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,支持自动化部署、大规模可伸缩、应用容器化管理。在该链路模组部署完成时,则可以基于该链路模组记录当前服务中每个子服务的调用数据。
步骤S202,基于所述链路模组,记录当前服务中每个子服务的调用数据,根据所述调用数据确定每个所述子服务之间的关联关系。
在本实施例中,一次服务请求所请求的服务即为一次服务,获取当前接收到的服务请求,根据该服务请求确定当前对应的服务。一次服务请求对应的服务可能调用多个子服务(即微服务),记录当前服务中每个子服务的调用数据,该调用数据具体包括子服务的traceID、spanID、parentspandID和duration字段。其中,traceID用于标识一次完整的服务,为预设时段内的当前服务的唯一标识,在同一服务下的所有子服务的traceID相同;spanID则为子服务对应的标识编号,根据该spanID可以唯一识别当前服务中不同的子服务;parentspandID则为当前子服务对应的调用方;duration字段表示子服务的服务处理时长,通过duration字段则可以确定每个子服务的一次处理时长。
根据记录的调用数据,则可以确定一次服务中每个子服务之间的关联关系。该关联关系与当前子服务的调用方相关,根据该关联关系即可确定当前该子服务的调用方。具体地,该调用方可通过当前子服务的调用数据确定,该子服务的调用方与该子服务之间为相关联的关系,非调用方则与该子服务之间为非关联的关系。
步骤S203,根据所述关联关系生成所述服务的链路跟踪信息,存储所述链路跟踪信息。
在本实施例中,在获取到各个子服务之间的关联关系时,则根据该关联关系生成当前服务的链路跟踪信息。该链路跟踪信息即反映了当前服务中各个子服务之间的调用情况,在得到当前服务的链路跟踪信息时,存储该链路跟踪信息。具体地,在确定每个子服务之间的关联关系时,基于该关联关系可以将所有相关联的子服务之间用链路表示出来,根据该链路则可以绘制出当前服务对应的链路图,如树状图,该链路图即反映了当前服务的链路跟踪信息。如图3所示,该图为一个链路跟踪信息示意图,即反映了一次服务中多个子服务组成的链路跟踪信息。
由图3可知,节点1、2、3、4分别为一个子服务,当前服务的标识即所有子服务的traceID为1,节点1(子服务1)的spanID为1,节点2(子服务2)的spanID为2,依次类推。节点2的parentspandID为1,即表示节点2与节点1相关联,节点2的调用方为节点1;节点3、4的parentspandID为2,即表示节点3、4与节点2相关联,节点3、4的调用方为节点2;节点3、4之间无关联。节点1的duration字段为2100,即表示节点1的服务处理时长为2100ms;节点2的duration字段为2000,即服务处理时长为2000ms;节点3的duration字段为800,即服务处理时长为800ms,节点4的duration字段为900,即服务处理时长为900ms。
需要强调的是,为进一步保证上述链路跟踪信息的私密和安全性,上述链路跟踪信息还可以存储于一区块链的节点中。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
步骤S204,在接收到链路查看指令时,以图像的形式发送所述链路跟踪信息。
在本实施例中,在接收到链路查看指令时,则将得到的链路跟踪信息以图像的形式发送至该链路查看指令对应的发起方。根据该链路跟踪信息则可以确定一次完整服务中每个子服务之间的关联关系,及每个子服务的服务处理时长,由此实现服务中链路跟踪的目的。
本申请通过将链路模组部署至Kubernetes中,接着基于所述链路模组,记录当前服务中每个子服务的调用数据,根据所述调用数据确定每个所述子服务之间的关联关系,之后根据所述关联关系生成所述服务的链路跟踪信息,存储所述链路跟踪信息,而后在接收到链路查看指令时,以图像的形式发送所述链路跟踪信息,实现了在容器集群中对分布式微服务问题的快速定位,减少了问题定位的时长,提高了对微服务问题的定位及处理效率。本申请还可应用于智慧安防领域中,从而推动智慧城市的建设。
在本申请的一些实施例中,上述将链路模组部署至Kubernetes中包括:
在接收到部署指令时,获取所述部署指令对应的链路模组;
推送所述链路模组至镜像仓库,基于所述镜像仓库得到所述链路模组的***镜像;
基于helm指令在Kubernetes中部署所述***镜像。
在接收到部署指令时,获取该部署指令对应的链路模组,该链路模组包括代理子模组、收集子模组和存储子模组。将该链路模组推送至镜像仓库,得到该链路模组对应的***镜像,该***镜像即为该链路模组对应的镜像文件,该镜像文件中仍然包括该链路模组中的代理子模组、收集子模组和存储子模组。在得到该***镜像时,则基于helm指令和该***镜像在Kubernetes中进行部署。具体地,该部署则包括对***镜像进行参数的添加。对于不同的子模组所添加的参数不同,该参数反映了每个子模组之间的连接关系,如代理子模组与收集子模组之间的连接路径,收集子模组与存储子模组之间的连接路径。在得到该链路模组对应的***镜像时,则基于helm指令在Kubernetes中部署。在该链路模组部署完成时,则可以基于该链路模组记录当前服务中每个子服务的调用数据。
本实施例通过helm指令和***镜像,实现了对链路模组在Kubernetes中的快速高效地部署。
在本申请的一些实施例中,上述基于helm指令在Kubernetes中部署所述***镜像包括:
获取目标参数,基于***启动命令添加所述目标参数至所述***镜像中;
在得到所述目标参数添加后的***镜像时,基于helm指令将所述目标参数添加后的***镜像部署至Kubernetes中。
目标参数为该链路模组中代理子模组和收集子模组分别对应的路径参数和名称等,根据该目标参数可以确定代理子模组对应的收集子模组,以及收集子模组对应的存储子模组。将该目标参数添加至当前链路模组对应***镜像的***启动命令中,以使其中的代理子模组将获取到的信息发送至收集子模组中,收集子模组将获取到的信息发送至存储子模组中。最终得到目标参数添加后的***镜像,在得到目标参数添加后的***镜像时,基于helm指令将目标参数添加后的***镜像部署至Kubernetes中,由此即实现了在Kubernetes中对链路模组的部署。
本实施例通过helm指令将目标参数添加后的***镜像部署至Kubernetes中,实现了对链路模组在Kubernetes中的部署,使得通过部署后的链路模组能够对服务的链路信息进行快速追踪。
在本申请的一些实施例中,上述基于***启动命令添加所述目标参数至所述***镜像中之后还包括:
获取所述链路模组的下载地址;
配置所述下载地址至Kubernetes中的配置映射中,并将所述下载地址在所述***镜像的dockerfile文件中以变量引用的形式使用。
下载地址为该链路模组中代理子模组及收集子模组分别对应的下载地址,将当前链路模组中代理子模组发布到一个文件服务器中,则可获取到该代理子模组对应的下载地址。在获取到该下载地址时,将该下载地址配置到Kubernetes中的配置映射(configMap)中,并将该下载地址在该链路模组对应的***镜像的dockerfile文件中以变量引用的形式使用,这样可以使得潜在的环境迁移发生时所造成的影响最小。
本实施例通过将下载地址在***镜像的dockerfile文件中以变量引用的形式使用,降低了在环境迁移发生时所造成的影响,减少了工作量,提高了链路跟踪效率。
在本申请的一些实施例中,上述根据所述调用数据确定每个所述子服务之间的关联关系包括:
获取所述调用数据中每个所述子服务的parentspandID;
根据所述parentspandID确定每个所述子服务之间的关联关系。
在获取到调用数据时,获取该调用数据中的每个子服务的parentspanID。该parentspanID记录了当前子服务对应的调用方,根据该parentspanID则可确定两个服务之间是否相关联。若两个子服务的parentspanID相同,则确定该两个子服务的调用方相同,该两个子服务之间非关联;若两个子服务的parentspanID不相同,且当前子服务的parentspanID与其中另一子服务的spanID不相同,亦确定该两个子服务之间非关联。
若两个子服务的parentspanID不相同,且当前子服务的parentspanID与其中另一子服务的spanID相同,则确定其中另一子服务为当前该子服务的调用方,该两个子服务之间相关联。例如,当前子服务的parentspanID为2,则该子服务对应的调用方为spanID为2的子服务,该spanID为2的子服务与当前子服务相关联。
本实施例通过获取调用数据中的parentspanID,确定每个子服务之间的关联关系,实现了对服务链路信息追踪,提高了在大数量级的集群中的链路追踪准确率。
在本申请的一些实施例中,上述根据所述parentspandID确定每个所述子服务之间的关联关系包括:
获取每个所述子服务的spanID;
根据所述parentspanID确定所述子服务的调用方,其中,所述子服务的parentspanID与所述子服务的调用方的spanID相同,在所述parentspanID为-1时,确定所述parentspanID对应的子服务为根节点服务。
spanID为此次服务中每个子服务对应的唯一标识ID,根据该spanID则可确定对应的子服务。在获取到当前子服务的parentspanID时,则确定该parentspanID是否与其他子服务的spanID相同,若该parentspanID与另一子服务的spanID相同,则该另一子服务即为当前该子服务的调用方,该两个子服务之间为相关联的关系。并且在本实施例中,根节点服务的parentspanID置为-1,在获取到子服务的parentspanID为-1时则确定该子服务为根节点服务。
本实施例通过获取spanID和parentspanID,实现了对服务中每个子服务调用方的确定,进一步实现了对服务链路信息的精准追踪。
在本申请的一些实施例中,上述存储所述链路跟踪信息之后还包括:
获取所述链路跟踪信息中每个所述子服务的duration字段;
根据所述duration字段确定在预设时间段内响应超时的子服务。
预设时间段为一次完整的服务执行总时段,该预设时间段可以为预先设定的时间段,也可以为自定义选择的时间段。根据链路跟踪信息获取一次服务中每个子服务的duration字段,该duration字段表示每个子服务的服务处理时长,根据该duration字段则可以确定在预设时间段内响应超时的子服务。若当前子服务的duration字段在该预设时间段内大于其预设的处理时长,则确定当前该子服务响应超时;进一步的,在确定当前子服务存在响应超时时,还可以通过标签标识当前该响应超时的子服务,根据该标签即可确定该子服务超时。若当前该子服务的duration字段在该预设时间段内不小于其预设的处理时长,则确定当前该子服务处理性能正常,不存在异常处理。
本实施例通过获取链路跟踪信息中子服务的duration字段,实现了对超时子服务的监控,提高了对服务中问题的定位速度及处理效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图4,作为对上述图2所示方法的实现,本申请提供了一种分布式链路跟踪装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例所述的分布式链路跟踪装置400包括:部署模块401、记录模块402、存储模块403以及发送模块404。其中:
部署模块401,用于将链路模组部署至Kubernetes中;
其中,所述部署模块401包括:
第一获取单元,用于在接收到部署指令时,获取所述部署指令对应的链路模组;
推送单元,用于推送所述链路模组至镜像仓库,基于所述镜像仓库得到所述链路模组的***镜像;
部署单元,用于基于helm指令在Kubernetes中部署所述***镜像。
其中,所述部署单元包括:
添加子单元,用于获取目标参数,基于***启动命令添加所述目标参数至所述***镜像中;
部署子单元,用于在得到所述目标参数添加后的***镜像时,基于helm指令将所述目标参数添加后的***镜像部署至Kubernetes中。
第一获取子单元,用于获取所述链路模组的下载地址;
配置子单元,用于配置所述下载地址至Kubernetes中的配置映射中,并将所述下载地址在所述***镜像的dockerfile文件中以变量引用的形式使用。
在本实施例中,在链路追踪之前,需要对链路模组进行部署,以便通过该链路模组对服务中每个子服务的调用数据进行获取及追踪。因此,在接收到部署指令时,则获取该部署指令对应的链路模组,其中,该链路模组包括代理子模组、收集子模组和存储子模组。基于该部署指令通过镜像将该代理子模组、收集子模组和存储子模组部署在Kubernetes中,其中,Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,支持自动化部署、大规模可伸缩、应用容器化管理。在该链路模组部署完成时,则可以基于该链路模组记录当前服务中每个子服务的调用数据。
记录模块402,用于基于所述链路模组,记录当前服务中每个子服务的调用数据,根据所述调用数据确定每个所述子服务之间的关联关系;
其中,所述记录模块402包括:
第二获取单元,用于获取所述调用数据中每个所述子服务的parentspandID;
确认单元,用于根据所述parentspandID确定每个所述子服务之间的关联关系。
其中,确认单元还包括:
第二获取子单元,用于获取每个所述子服务的spanID;
确认子单元,用于根据所述parentspanID确定所述子服务的调用方,其中,所述子服务的parentspanID与所述子服务的调用方的spanID相同,在所述parentspanID为-1时,确定所述parentspanID对应的子服务为根节点服务。
在本实施例中,一次服务请求所请求的服务即为一次服务,获取当前接收到的服务请求,根据该服务请求确定当前对应的服务。一次服务请求对应的服务可能调用多个子服务(即微服务),记录当前服务中每个子服务的调用数据,该调用数据具体包括子服务的traceID、spanID、parentspanID和duration字段。其中,traceID用于标识一次完整的服务,为预设时段内的当前服务的唯一标识,在同一服务下的所有子服务的traceID相同;spanID则为子服务对应的标识编号,根据该spanID可以唯一识别当前服务中不同的子服务;parentspanID则为当前子服务对应的调用方;duration字段表示子服务的服务处理时长,通过duration字段则可以确定每个子服务的一次处理时长。
根据记录的调用数据,则可以确定一次服务中每个子服务之间的关联关系。该关联关系与当前子服务的调用方相关,根据该关联关系即可确定当前该子服务的调用方。具体地,该调用方可通过当前子服务的调用数据确定,该子服务的调用方与该子服务之间为相关联的关系,非调用方则与该子服务之间为非关联的关系。
存储模块403,用于根据所述关联关系生成所述服务的链路跟踪信息,存储所述链路跟踪信息;
在本实施例中,在获取到各个子服务之间的关联关系时,则根据该关联关系生成当前服务的链路跟踪信息。该链路跟踪信息即反映了当前服务中各个子服务之间的调用情况,在得到当前服务的链路跟踪信息时,存储该链路跟踪信息。具体地,在确定每个子服务之间的关联关系时,基于该关联关系可以将所有相关联的子服务之间用链路表示出来,根据该链路则可以绘制出当前服务对应的树状图,该树状图即反映了当前服务的链路跟踪信息。如图3所示,该图为一个链路跟踪信息示意图,即反映了一次服务中多个子服务组成的链路跟踪信息。
由图3可知,节点1、2、3、4分别为一个子服务,当前服务的标识即所有子服务的traceID为1,节点1(子服务1)的spanID为1,节点2(子服务2)的spanID为2,依次类推。节点2的parentspanID为1,即表示节点2与节点1相关联,节点2的调用方为节点1;节点3、4的parentspanID为2,即表示节点3、4与节点2相关联,节点3、4的调用方为节点2;节点3、4之间无关联。节点1的duration字段为2100,即表示节点1的服务处理时长为2100ms;节点2的duration字段为2000,即服务处理时长为2000ms;节点3的duration字段为800,即服务处理时长为800ms,节点4的duration字段为900,即服务处理时长为900ms。
需要强调的是,为进一步保证上述链路跟踪信息的私密和安全性,上述链路跟踪信息还可以存储于一区块链的节点中。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
发送模块404,用于在接收到链路查看指令时,以图像的形式发送所述链路跟踪信息。
在本实施例中,在接收到链路查看指令时,则将得到的链路跟踪信息以图像的形式发送至该链路查看指令对应的发起方。根据该链路跟踪信息则可以确定一次完整服务中每个子服务之间的关联关系,及每个子服务的服务处理时长,由此实现服务中链路跟踪的目的。
获取模块,用于获取所述链路跟踪信息中每个所述子服务的duration字段;
确认模块,用于根据所述duration字段确定在预设时间段内响应超时的子服务。
本申请提供的分布式链路跟踪装置,实现了在容器集群中对分布式微服务问题的快速定位,减少了问题定位的时长,提高了对微服务问题的定位及处理效率。本申请还可应用于智慧安防领域中,从而推动智慧城市的建设。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图5,图5为本实施例计算机设备基本结构框图。
所述计算机设备6包括通过***总线相互通信连接存储器61、处理器62、网络接口63。需要指出的是,图中仅示出了具有组件61-63的计算机设备6,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器61至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器61可以是所述计算机设备6的内部存储单元,例如该计算机设备6的硬盘或内存。在另一些实施例中,所述存储器61也可以是所述计算机设备6的外部存储设备,例如该计算机设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器61还可以既包括所述计算机设备6的内部存储单元也包括其外部存储设备。本实施例中,所述存储器61通常用于存储安装于所述计算机设备6的操作***和各类应用软件,例如分布式链路跟踪方法的计算机可读指令等。此外,所述存储器61还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器62在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器62通常用于控制所述计算机设备6的总体操作。本实施例中,所述处理器62用于运行所述存储器61中存储的计算机可读指令或者处理数据,例如运行所述分布式链路跟踪方法的计算机可读指令。
所述网络接口63可包括无线网络接口或有线网络接口,该网络接口63通常用于在所述计算机设备6与其他电子设备之间建立通信连接。
本申请提供的所述计算机设备,实现了在容器集群中对分布式微服务问题的快速定位,减少了问题定位的时长,提高了对微服务问题的定位及处理效率。本申请还可应用于智慧安防领域中,从而推动智慧城市的建设。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的分布式链路跟踪方法的步骤。
本申请提供的所述计算机可读存储介质,实现了在容器集群中对分布式微服务问题的快速定位,减少了问题定位的时长,提高了对微服务问题的定位及处理效率。本申请还可应用于智慧安防领域中,从而推动智慧城市的建设。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

Claims (10)

1.一种分布式链路跟踪方法,其特征在于,包括下述步骤:
将链路模组部署至Kubernetes中;
基于所述链路模组,记录当前服务中每个子服务的调用数据,根据所述调用数据确定每个所述子服务之间的关联关系;
根据所述关联关系生成所述服务的链路跟踪信息,存储所述链路跟踪信息;
在接收到链路查看指令时,以图像的形式发送所述链路跟踪信息。
2.根据权利要求1所述的分布式链路跟踪方法,其特征在于,所述将链路模组部署至Kubernetes中的步骤具体包括:
在接收到部署指令时,获取所述部署指令对应的链路模组;
推送所述链路模组至镜像仓库,基于所述镜像仓库得到所述链路模组的***镜像;
基于helm指令在Kubernetes中部署所述***镜像。
3.根据权利要求2所述的分布式链路跟踪方法,其特征在于,所述基于helm指令在Kubernetes中部署所述***镜像的步骤具体包括:
获取目标参数,基于***启动命令添加所述目标参数至所述***镜像中;
在得到所述目标参数添加后的***镜像时,基于helm指令将所述目标参数添加后的***镜像部署至Kubernetes中。
4.根据权利要求3所述的分布式链路跟踪方法,其特征在于,在所述基于***启动命令添加所述目标参数至所述***镜像中的步骤之后还包括:
获取所述链路模组的下载地址;
配置所述下载地址至Kubernetes中的配置映射中,并将所述下载地址在所述***镜像的dockerfile文件中以变量引用的形式使用。
5.根据权利要求1所述的分布式链路跟踪方法,其特征在于,所述根据所述调用数据确定每个所述子服务之间的关联关系的步骤具体包括:
获取所述调用数据中每个所述子服务的parentspandID;
根据所述parentspandID确定每个所述子服务之间的关联关系。
6.根据权利要求5所述的分布式链路跟踪方法,其特征在于,所述根据所述parentspandID确定每个所述子服务之间的关联关系的步骤具体包括:
获取每个所述子服务的spanID;
根据所述parentspanID确定所述子服务的调用方,其中,所述子服务的parentspanID与所述子服务的调用方的spanID相同,在所述parentspanID为-1时,确定所述parentspanID对应的子服务为根节点服务。
7.根据权利要求1所述的分布式链路跟踪方法,其特征在于,在所述存储所述链路跟踪信息的步骤之后还包括:
获取所述链路跟踪信息中每个所述子服务的duration字段;
根据所述duration字段确定在预设时间段内响应超时的子服务。
8.一种分布式链路跟踪装置,其特征在于,包括:
部署模块,用于将链路模组部署至Kubernetes中;
记录模块,用于基于所述链路模组,记录当前服务中每个子服务的调用数据,根据所述调用数据确定每个所述子服务之间的关联关系;
存储模块,用于根据所述关联关系生成所述服务的链路跟踪信息,存储所述链路跟踪信息;
发送模块,用于在接收到链路查看指令时,以图像的形式发送所述链路跟踪信息。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至7中任一项所述的分布式链路跟踪方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的分布式链路跟踪方法的步骤。
CN202010622513.1A 2020-06-30 2020-06-30 分布式链路跟踪方法、装置、计算机设备及存储介质 Active CN111813418B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010622513.1A CN111813418B (zh) 2020-06-30 2020-06-30 分布式链路跟踪方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010622513.1A CN111813418B (zh) 2020-06-30 2020-06-30 分布式链路跟踪方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN111813418A true CN111813418A (zh) 2020-10-23
CN111813418B CN111813418B (zh) 2024-04-05

Family

ID=72856761

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010622513.1A Active CN111813418B (zh) 2020-06-30 2020-06-30 分布式链路跟踪方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN111813418B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113014435A (zh) * 2021-03-15 2021-06-22 杭州米络星科技(集团)有限公司 链路探测方法、装置、电子设备及存储介质
CN114389970A (zh) * 2021-12-03 2022-04-22 浙江时空道宇科技有限公司 一种链路监控方法及装置
CN115757303A (zh) * 2022-11-14 2023-03-07 华青融天(北京)软件股份有限公司 分布式***中的指标追踪方法及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140075032A1 (en) * 2012-09-07 2014-03-13 Oracle International Corporation Declarative and extensible model for provisioning of cloud based services
CN106888254A (zh) * 2017-01-20 2017-06-23 华南理工大学 一种基于Kubernetes的容器云架构及其各模块之间的交互方法
CN107979493A (zh) * 2017-11-21 2018-05-01 平安科技(深圳)有限公司 平台即服务paas容器平台的构建方法、服务器及存储介质
US20180270122A1 (en) * 2017-03-20 2018-09-20 Red Hat, Inc. Automatic microservice problem detection in enterprise applications
CN108713304A (zh) * 2016-02-12 2018-10-26 高通股份有限公司 针对基于时隙的传输时间间隔(tti)的上行链路信道设计
CN109828886A (zh) * 2018-12-29 2019-05-31 南京南瑞信息通信科技有限公司 一种容器云环境下的ci/cd监控方法和***
CN109885449A (zh) * 2018-12-29 2019-06-14 北京奥鹏远程教育中心有限公司 全链路跟踪方法
CN110069354A (zh) * 2019-04-15 2019-07-30 必成汇(成都)科技有限公司 微服务全链路跟踪方法及微服务架构
CN110661657A (zh) * 2019-09-23 2020-01-07 中国—东盟信息港股份有限公司 一种Kubernetes云原生应用的网络安全监控方法及其***
WO2020125265A1 (zh) * 2018-12-21 2020-06-25 中兴通讯股份有限公司 容器的业务监控方法、***和计算机可读存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140075032A1 (en) * 2012-09-07 2014-03-13 Oracle International Corporation Declarative and extensible model for provisioning of cloud based services
CN108713304A (zh) * 2016-02-12 2018-10-26 高通股份有限公司 针对基于时隙的传输时间间隔(tti)的上行链路信道设计
CN106888254A (zh) * 2017-01-20 2017-06-23 华南理工大学 一种基于Kubernetes的容器云架构及其各模块之间的交互方法
US20180270122A1 (en) * 2017-03-20 2018-09-20 Red Hat, Inc. Automatic microservice problem detection in enterprise applications
CN107979493A (zh) * 2017-11-21 2018-05-01 平安科技(深圳)有限公司 平台即服务paas容器平台的构建方法、服务器及存储介质
WO2020125265A1 (zh) * 2018-12-21 2020-06-25 中兴通讯股份有限公司 容器的业务监控方法、***和计算机可读存储介质
CN109828886A (zh) * 2018-12-29 2019-05-31 南京南瑞信息通信科技有限公司 一种容器云环境下的ci/cd监控方法和***
CN109885449A (zh) * 2018-12-29 2019-06-14 北京奥鹏远程教育中心有限公司 全链路跟踪方法
CN110069354A (zh) * 2019-04-15 2019-07-30 必成汇(成都)科技有限公司 微服务全链路跟踪方法及微服务架构
CN110661657A (zh) * 2019-09-23 2020-01-07 中国—东盟信息港股份有限公司 一种Kubernetes云原生应用的网络安全监控方法及其***

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
LEILA ABDOLLAHI VAYGHAN等: "Kubernetes as an Availabiliy Manager for Microservice Applications", 《COMPUTER SCIENCE》, pages 1 - 10 *
杨迪: "基于容器云的微服务***", 《电信科学》, vol. 34, no. 09, pages 169 - 178 *
潘卿帅: "智能服务中心服务化关键技术的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 05, pages 138 - 298 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113014435A (zh) * 2021-03-15 2021-06-22 杭州米络星科技(集团)有限公司 链路探测方法、装置、电子设备及存储介质
CN113014435B (zh) * 2021-03-15 2022-10-11 杭州米络星科技(集团)有限公司 链路探测方法、装置、电子设备及存储介质
CN114389970A (zh) * 2021-12-03 2022-04-22 浙江时空道宇科技有限公司 一种链路监控方法及装置
CN115757303A (zh) * 2022-11-14 2023-03-07 华青融天(北京)软件股份有限公司 分布式***中的指标追踪方法及装置
CN115757303B (zh) * 2022-11-14 2024-05-03 华青融天(北京)软件股份有限公司 分布式***中的指标追踪方法及装置

Also Published As

Publication number Publication date
CN111813418B (zh) 2024-04-05

Similar Documents

Publication Publication Date Title
CN111414334A (zh) 基于云技术的文件分片上传方法、装置、设备及存储介质
CN111274045B (zh) 一种多平台对接方法、装置、计算机设备及可读存储介质
CN111813418B (zh) 分布式链路跟踪方法、装置、计算机设备及存储介质
CN110908812B (zh) 业务数据处理方法、装置、可读存储介质和计算机设备
CN112631924A (zh) 自动化测试方法、装置、计算机设备及存储介质
CN112468409A (zh) 访问控制方法、装置、计算机设备及存储介质
CN110825807A (zh) 基于人工智能的数据交互转换方法、装置、设备及介质
CN114564294A (zh) 智能服务编排方法、装置、计算机设备及存储介质
CN113434254B (zh) 客户端部署方法、装置、计算机设备及存储介质
CN112860662B (zh) 自动化生产数据血缘关系建立方法、装置、计算机设备及存储介质
CN116956326A (zh) 权限数据的处理方法、装置、计算机设备及存储介质
CN111475468A (zh) 新增***的日志接入方法、装置、设备及存储介质
CN114968822A (zh) 接口测试方法、装置、计算机设备及存储介质
CN114143308A (zh) 文件上传信息处理方法、装置、计算机设备及存储介质
CN114626352A (zh) 报表自动化生成方法、装置、计算机设备及存储介质
CN112632192A (zh) 节点维护方法、装置、计算机设备及介质
CN112083949B (zh) 自适应跨平台方法、装置、计算机设备及存储介质
CN116302847B (zh) 异常信息的动态采集方法、装置、计算机设备及介质
CN115002218B (zh) 流量分发方法、装置、计算机设备及存储介质
CN113449035B (zh) 数据同步方法、装置、计算机设备及可读存储介质
CN114218191A (zh) ***功能迁移方法、装置、计算机设备及存储介质
CN117851014A (zh) 一种应用程序的调用方法、装置、计算机设备和存储介质
CN116795511A (zh) 一种唯一标识符生成方法、装置、计算机设备及存储介质
CN112632102A (zh) 数据查询方法、装置、计算机设备及存储介质
CN116206032A (zh) 任务校验方法、装置、计算机设备及其介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20210209

Address after: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Applicant after: Shenzhen saiante Technology Service Co.,Ltd.

Address before: 1-34 / F, Qianhai free trade building, 3048 Xinghai Avenue, Mawan, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong 518000

Applicant before: Ping An International Smart City Technology Co.,Ltd.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant