CN114338494A - 服务依赖拓扑关系获取方法和装置、存储介质和电子设备 - Google Patents
服务依赖拓扑关系获取方法和装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN114338494A CN114338494A CN202210240854.1A CN202210240854A CN114338494A CN 114338494 A CN114338494 A CN 114338494A CN 202210240854 A CN202210240854 A CN 202210240854A CN 114338494 A CN114338494 A CN 114338494A
- Authority
- CN
- China
- Prior art keywords
- link path
- link
- queue
- log
- identifier
- 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
Links
Images
Abstract
本发明公开了一种服务依赖拓扑关系获取方法和装置、存储介质和电子设备,该方法包括:获取链路路径日志;链路追踪中间件对链路路径日志进行格式转换,得到第一结果;设置链路路径标识有界队列及服务调用关系队列;拓扑能力计算集群获取链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系,将通过去重策略校验的链路路径标识存储于对应的链路路径标识有界队列中;从链路路径标识有界队列中获取第一预设时间范围内的目标链路路径标识,并基于目标链路路径标识和第一结果确定目标链路路径标识对应的全局服务调用关系,将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列中。
Description
技术领域
本发明涉及分布式链路追踪领域,尤其涉及一种服务依赖拓扑关系获取方法和装置、存储介质和电子设备。
背景技术
随着公司业务的逐步发展,后端架构模式会从最初始的单机模式逐步演变为微服务架构模式,这种演变提高了开发效率、降低了业务之间的解耦性,但是与此同时,它也大大提高了服务迁移和服务迭代的难度。通常在迁移和迭代某一服务时,需要知道该服务上游有哪些服务调用该服务,也需要知道该服务调用了哪些下游服务,这样才能以最小的影响进行服务的升级和迁移。
基于该问题,市面上出现了多种分布式链路追踪中间件,例如zipkin、skywalking等,这些开源分布式链路追踪中间件从一定程度上完成了微服务架构中服务依赖拓扑关系的展示能力,但是他们都是简单直接地从elasticsearch、mysql等存储引擎中查询trace链路信息来进行服务依赖拓扑关系计算。当面对大数据量级别的查询,例如GB、TB数据量级别的查询时,其可用性则大大降低;而且当数据量偏大时,存储引擎的查询时间和分布式链路追踪中间件的计算时间都会很长,这使得获取服务拓扑关系的耗时大大增加,也极大地降低了用户的使用体验。
发明内容
有鉴于此,本发明提供了一种服务依赖拓扑关系获取方法和装置、存储介质和电子设备,能够解决当数据量偏大时,使用分布式链路追踪中间件,造成的存储引擎的查询时间和分布式链路追踪中间件的计算时间长,获取服务拓扑关系的耗时大,降低用户的使用体验的技术问题。
为解决上述技术问题,本发明提供了一种服务依赖拓扑关系获取方法,包括:获取链路路径日志;链路追踪中间件对链路路径日志进行格式转换,得到第一结果;设置链路路径标识有界队列及服务调用关系队列;拓扑能力计算集群获取链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系,将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列中;从链路路径标识有界队列中获取第一预设时间范围内的目标链路路径标识,并基于目标链路路径标识和第一结果确定目标链路路径标识对应的全局服务调用关系,将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列中,全局服务调用关系为由具有调用关系的服务组成的全局关系序列。
可选地,将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列之后,还包括:基于服务调用关系队列,获取服务依赖拓扑关系。
可选地,去重策略为:若待筛选链路路径日志对应的链路路径的链路路径标识已经存在于与待筛选链路路径日志对应的链路路径标识有界队列中,则待筛选链路路径日志未通过校验;若待筛选链路路径日志对应的链路路径中的链路节点的服务调用关系已经存在于与待筛选链路路径日志对应的服务调用关系队列中,则待筛选链路路径日志未通过校验。
可选地,拓扑能力计算集群中设置了扩容机制和/或随机取样机制;其中,扩容机制为对链路路径标识有界队列的容量进行实时调整;随机取样机制为链路路径标识有界队列达到存储上限时,随机抽取链路路径标识有界队列中的链路路径标识,并将随机抽取后的链路路径标识与通过去重策略校验且未存储于链路路径标识有界队列中的链路路径的链路路径标识存储于链路路径标识有界队列中;或者,分别随机抽取链路路径标识有界队列中的链路路径标识和通过去重策略校验且未存储于链路路径标识有界队列中的链路路径的链路路径标识,并将随机抽取后的链路路径标识存储于链路路径标识有界队列中。
可选地,链路路径标识有界队列包括一个或者多个链路路径标识有界队列,其中,每个链路路径标识有界队列都对应有唯一的队列名称;其中,队列名称包括时间标识,时间标识为获取初始时间或者获取结束时间;获取初始时间为获取待筛选链路路径日志的起始时间;获取结束时间为获取待筛选链路路径日志的结束时间。
可选地,拓扑能力计算集群获取链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系,包括:拓扑能力计算集群从链路路径日志中获取第二预设时间范围内的预设数量的链路路径日志作为待筛选链路路径日志,其中,第二预设时间范围为获取初始时间与获取结束时间的时间间隔;响应于对待筛选链路路径日志的处理结果,得到待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系。
可选地,响应于对待筛选链路路径日志的处理结果,得到待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系之后,还包括:当时间标识为获取初始时间时,查找具有与获取初始时间相同的时间标识对应的链路路径标识有界队列;将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列,包括:根据去重策略校验待筛选链路路径日志,并将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列中。
可选地,响应于对待筛选链路路径日志的处理结果,得到待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系之后,还包括:当时间标识为获取结束时间时,查找具有与获取结束时间相同的时间标识对应的链路路径标识有界队列;将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列,包括:根据去重策略校验待筛选链路路径日志,并将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列中。
可选地,在得到通过去重策略校验的链路路径的链路路径标识之后,还包括:将通过去重策略校验的链路路径中各链路节点的服务调用关系存储于服务调用关系队列,其中,通过去重策略校验的链路路径中各链路节点的服务调用关系为与链路路径中各链路节点具有直接调用关系的服务。
可选地,服务调用关系队列中的每个服务调用关系队列对应一个或者多个链路路径标识有界队列。
本发明提供了一种服务依赖拓扑关系获取装置,其包括:链路路径日志获取模块,配置为获取链路路径日志;链路追踪中间件,配置为对链路路径日志进行格式转换,得到第一结果;队列设置模块,配置为设置链路路径标识有界队列及服务调用关系队列;拓扑能力计算集群,配置为获取链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系,将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列中;以及从链路路径标识有界队列中获取第一预设时间范围内的目标链路路径标识,并基于目标链路路径标识和第一结果确定目标链路路径标识对应的全局服务调用关系,将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列中,全局服务调用关系为由具有调用关系的服务组成的全局关系序列。
本发明提供了一种计算机可读存储介质,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如前所述方法。
本发明提供了一种电子设备,其特征在于,所述电子设备,包括:处理器,用于执行多条指令;存储器,用于存储多条指令;其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如前所述方法。
技术效果:
本发明基于现有的分布式链路追踪中间件(例如zipkin、skywalking等)的服务依赖拓扑关系能力进行优化,提出了一套支持大数据量的、低延迟的服务依赖拓扑关系的计算方法和装置;它不仅解决了现有开源框架无法支持大数据量的服务依赖拓扑关系计算能力的问题,而且将原本的十几秒乃至几十秒的时长,缩短至毫秒级别。针对符合OpenTracing(分布式追踪)标准的分布式链路追踪中间件设计的服务依赖拓扑关系能力的优化,不仅可以完成大数据量下的服务依赖拓扑关系的计算,而且极大地减少了服务依赖关系查询的时延。一方面能够迅速、准确地获取服务依赖拓扑关系,降低开发人员的使用成本,提高用户使用体验;另一方面,大大提高了分布式链路追踪装置的可用性,使其在大数据量下依然能完成服务依赖拓扑关系的计算。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本发明一示例性实施例提供的服务依赖拓扑关系获取方法的流程示意图;
图2是本发明一示例性实施例提供的服务依赖拓扑关系获取方法中的链路路径信息的消息格式;
图3是本发明一示例性实施例提供的服务依赖拓扑关系获取方法中存储链路路径标识的示意图;
图4是本发明一示例性实施例提供的服务依赖拓扑关系获取方法中计算服务依赖拓扑关系的示意图;
图5是本发明一示例性实施例提供的服务依赖拓扑关系获取方法的架构示意图;
图6是本发明一示例性实施例提供的服务依赖拓扑关系获取装置的结构示意图;
图7是本发明一示例性实施例提供的电子设备的结构。
具体实施方式
下面,将参考附图详细地描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
本领域技术人员可以理解,本发明实施例中的“第一”、“第二”、“S101”~“S105”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本发明实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本发明实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本发明中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本发明中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本发明对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
示例性方法
图1是本发明一示例性实施例提供的服务依赖拓扑关系获取方法的流程示意图。本实施例可应用在电子设备上,如图1所示,包括以下步骤:
步骤S101:获取链路路径日志;
链路路径日志(也可称为链路日志),链路路径日志中记载有链路路径信息(也可称为trace链路信息),具体的链路路径信息的消息格式如图2所示。
步骤S102:链路追踪中间件对链路路径日志进行格式转换,得到第一结果。
链路追踪中间件为符合OpenTracing标准的分布式链路追踪中间件,例如,zipkin、skywalking等,本领域技术人员可以根据实际需要灵活选择,此处不做限定。
第一结果存储于存储引擎中,其中,存储引擎是基于磁盘的持久化存储引擎,存储引擎可以为存储引擎集群,例如,elasticsearch存储引擎集群、mysql存储引擎集群等。
在一种具体实现方式中,链路路径日志可由多个服务器生成,每个服务器包括微服务和Filebeat(Filebeat是用于转发和集中链路路径日志数据的轻量级传送程序),首先将微服务产生的链路路径日志存储于服务器的磁盘中,再由Filebeat从服务器的磁盘中采集该链路路径日志,将该链路路径日志存储于kafka消息队列中,其中kafka消息队列可以为kafka集群生成的消息队列;链路追踪中间件获取kafka消息队列中存储的链路路径日志,并对该链路路径日志进行格式转换,转换为与链路追踪中间件适配的格式,作为第一结果,再将该第一结果存储至存储引擎中,用于后续的服务调用关系计算。
需要说明的是,链路追踪中间件将获取到的所有的链路路径日志进行格式转换,并将其存储至存储引擎中。这样可以保证后续拓扑能力计算集群能够快速、准确地计算出目标链路路径标识对应的全局服务调用关系。
步骤S103:设置链路路径标识(traceId)有界队列及服务调用关系队列。
链路路径标识有界队列是容量有限的队列,其容量是基于资源的承载能力确定的,该链路路径标识有界队列用于存储链路路径的链路路径标识;服务调用关系队列是不受容量限制的队列,其用于存储服务调用关系。
其中,链路路径标识有界队列可包括一个或者多个链路路径标识有界队列,而服务调用关系队列中的每个服务调用关系队列可对应一个或者多个链路路径标识有界队列。每个服务调用关系队列存储其对应的一个或者多个链路路径标识有界队列中的链路路径标识对应的全局服务调用关系。
可选地,链路路径标识有界队列存储于缓存中,该缓存为独立的缓存,可以为缓存集群,例如redis集群。
链路路径标识为一个链路路径的唯一标识。每个链路路径均具有一个或多个链路节点,每个链路节点对应一个微服务或服务。具有相同链路路径标识的链路节点,都在同一条链路路径中。例如,链路路径为A->B->C,A、B、C均为链路节点,代表一个微服务或服务,A、B、C节点对应的链路路径标识都是相同的,该链路路径的服务调用关系是A->B,B->C(即A调用B,B调用C),该服务调用关系能够表征服务依赖拓扑关系。
步骤S104:拓扑能力计算集群(infra-trace)获取链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系,将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列中。
其中,步骤S104中获取到的各链路节点的服务调用关系是指各链路节点的直接服务调用关系。
可选地,拓扑能力计算集群以流式的方式从kafka消息队列中的链路路径日志中获取待筛选链路路径日志。另外,拓扑能力计算集群与链路追踪中间件从同一kafka消息队列获取相同的链路路径日志,也就是说,拓扑能力计算集群与链路追踪中间件获取链路路径日志的数据来源相同。
在本实施例中,步骤S104中的拓扑能力计算集群获取链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系,可具体包括:
拓扑能力计算集群从链路路径日志中获取第二预设时间范围内的预设数量的链路路径日志作为待筛选链路路径日志,其中,第二预设时间范围为获取初始时间与获取结束时间的时间间隔;
响应于对待筛选链路路径日志的处理结果,得到待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系。
其中,第二预设时间范围为拓扑能力计算集群每次获取链路路径日志中的待筛选链路路径日志的持续时间,预设数量为拓扑能力计算集群在第二预设时间范围内从链路路径日志中拉取待筛选链路路径日志的总条数,因此,基于处理能力及处理效率的平衡,第二预设时间范围、预设数量本领域技术人员可以根据实际需要灵活选择,此处不做限定。
拓扑能力计算集群在第二预设时间范围内可以进行至少一次的待筛选链路路径日志的拉取,但是,必须保证预设数量为第二预设时间范围内拉取的次数与每次拉取的待筛选链路路径日志的条数的乘积。
需要说明的是,若每次从kafka消息队列中拉取的待筛选链路路径日志的条数过少,就会导致每次处理的数据量过少,这样会带来处理效率不高的问题;若每次从kafka消息队列中拉取的待筛选链路路径日志的条数过多,又会占用过多的处理资源,造成处理部件的崩溃或者瘫痪,因此,每次拉取的待筛选链路路径日志的条数是基于处理能力及处理效率的平衡等因素综合决定的,由本领域技术人员根据实际需要进行选择,此处不做限定。可选地,每次拉取的待筛选链路路径日志的条数为100条至500条。
例如,若第二预设时间范围为1分钟且预设数量为10000条,每次拉取待筛选链路路径日志的条数为500条,则拓扑能力计算集群在该1分钟时间范围内进行了20次拉取,而该1分钟时间范围内获取到的10000条链路路径日志被作为待筛选链路路径日志进行处理,以得到待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系。
由于待筛选链路路径日志对应的链路路径的链路路径标识需要存储至对应的链路路径标识有界队列中,因此,在从kafka消息队列中的链路路径日志中获取到待筛选链路路径日志之后,可以以获取该待筛选链路路径日志的获取初始时间或者获取结束时间标记该待筛选链路路径日志,以及,在对该待筛选链路路径日志进行处理后,以获取该待筛选链路路径日志的获取初始时间或者获取结束时间标记该待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系(例如:2021-10-30-19:10)。
每个链路路径标识有界队列都对应有唯一的队列名称,该队列名称包括时间标识,该时间标识为获取初始时间或者获取结束时间,该获取初始时间为获取待筛选链路路径日志的起始时间;该获取结束时间为获取待筛选链路路径日志的结束时间。例如,链路路径标识有界队列的队列名称为traceIdList_2021-10-30-19:10,则其时间标识为2021-10-30-19:10,该时间标识可以为获取初始时间或者获取结束时间,具体为获取初始时间或者获取结束时间,根据具体使用情况确定。
可选地,响应于对待筛选链路路径日志的处理结果,得到待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系之后,该方法还包括:
当时间标识为获取初始时间时,查找具有与获取初始时间相同的时间标识对应的链路路径标识有界队列;此时,将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列,包括:根据去重策略校验待筛选链路路径日志,并将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列中。
具体地,若拓扑能力计算集群获取2021-10-30-19:10至2021-10-30-19:11时间范围(第二预设时间范围为1分钟)内的链路路径日志作为待筛选链路路径日志且链路路径标识有界队列的队列名称中的时间标识为获取初始时间,则在该第二预设时间范围内的待筛选链路路径日志、待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系都会以获取初始时间2021-10-30-19:10进行标记,并通过查询该链路路径标识有界队列的队列名称中的时间标识,找到与其具有相同时间的链路路径标识有界队列(队列名称:traceIdList_2021-10-30-19:10,时间标识:2021-10-30-19:10),将其存储于该链路路径标识有界队列中。
可选地,响应于对待筛选链路路径日志的处理结果,得到待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系之后,该方法还包括:
当时间标识为获取结束时间时,查找具有与获取结束时间相同的时间标识对应的链路路径标识有界队列;此时,将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列,包括:根据去重策略校验待筛选链路路径日志,并将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列中。
具体地,若拓扑能力计算集群获取2021-10-30-19:10至2021-10-30-19:11时间范围(第二预设时间范围为1分钟)内的链路路径日志作为待筛选链路路径日志且链路路径标识有界队列的队列名称中的时间标识为获取结束时间,则在该第二预设时间范围内的待筛选链路路径日志、待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系都会以获取结束时间2021-10-30-19:11进行标记,并通过查询该链路路径标识有界队列的队列名称中的时间标识,找到与其具有相同时间的链路路径标识有界队列(队列名称:traceIdList_2021-10-30-19:11,时间标识:2021-10-30-19:11),将其存储于该链路路径标识有界队列中。
如图3所示,在拓扑能力计算集群获取到链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系之后,会对待筛选链路路径日志对应的链路路径的链路路径标识进行去重策略(过滤器机制)校验,其中该去重策略可以为:
若待筛选链路路径日志对应的链路路径的链路路径标识已经存在于与待筛选链路路径日志对应的链路路径标识有界队列中,则待筛选链路路径日志未通过校验;
若待筛选链路路径日志对应的链路路径中的链路节点的服务调用关系已经存在于与待筛选链路路径日志对应的服务调用关系队列中,则待筛选链路路径日志未通过校验。
应当注意的是,只要不满足上述任意一种去重策略,都无法通过校验,也就是说,需要同时满足上述两种去重策略,才能够通过校验。
在得到通过去重策略校验的链路路径的链路路径标识之后,该方法还可包括:将通过去重策略校验的链路路径中各链路节点的服务调用关系存储于服务调用关系队列,其中,通过去重策略校验链路路径中各链路节点的服务调用关系为与链路路径中各链路节点具有直接调用关系的服务。
如图3所示,拓扑能力计算集群中设置了扩容机制和/或随机取样机制,本领域技术人员可以根据实际需要进行选择,此处不做限定。
扩容机制为对链路路径标识有界队列的容量进行实时调整(缩小或扩展)。例如,可以将默认存储1000个链路路径标识的链路路径标识有界队列进行动态设置,设置为500、3000或者其它存储量级,此处不做限定。为了增加服务依赖拓扑关系计算的准确性,链路路径标识有界队列的大小也能够采用自定义的方式进行设置。
随机取样机制为链路路径标识有界队列达到存储上限时,随机抽取链路路径标识有界队列中的链路路径标识,并将随机抽取后的链路路径标识与通过去重策略校验且未存储于链路路径标识有界队列中的链路路径的链路路径标识存储于链路路径标识有界队列中;或者,分别随机抽取链路路径标识有界队列中的链路路径标识和通过去重策略校验且未存储于链路路径标识有界队列中的链路路径的链路路径标识,并将随机抽取后的链路路径标识存储于链路路径标识有界队列中。
步骤S105:从链路路径标识有界队列中获取第一预设时间范围内的目标链路路径标识,并基于目标链路路径标识和第一结果确定目标链路路径标识对应的全局服务调用关系,将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列中,全局服务调用关系为由具有调用关系的服务组成的全局关系序列。
为了使服务调用关系队列中存储的服务调用关系没有冗余,在基于目标链路路径标识和第一结果确定目标链路路径标识对应的全局服务调用关系之后,会将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列中,这实质是对服务调用关系队列的去重操作,以保证服务调用关系队列中存储的服务调用关系是唯一、不重复的。
其中,服务调用关系队列存储的服务调用关系,如,服务A|服务B,即为图3中所示的A|B,这就说明服务A调用了服务B。服务调用关系队列中存储的服务调用关系能够表征服务之间的服务依赖拓扑关系,即两个服务之间的调用关系。
在一种可选实施方式中,如图4所示,第一预设时间范围可以为触发时间的前1分钟,例如,设定触发时间为1分钟,每隔1分钟触发任务,当到达触发时间时,从链路路径标识有界队列中获取触发时间前1分钟(第一预设时间范围)内的目标链路路径标识,并基于目标链路路径标识和第一结果确定目标链路路径标识对应的全局服务调用关系,将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列中。其中,第一预设时间范围和触发时间,本领域技术人员可以根据实际需要进行选择,此处不做限定。
在获取到目标链路路径标识后,根据每个目标链路路径标识,从第一结果中找出与每个目标链路路径标识具有相同的链路路径标识的所有链路路径日志,根据查找出的链路路径日志,由拓扑能力计算集群计算出每个目标链路路径标识对应的全局服务调用关系,并将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列中。
此外,在基于目标链路路径标识和第一结果确定目标链路路径标识对应的全局服务调用关系,将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列中之后,拓扑能力计算集群可以将服务调用关系队列存储在redis中,这样可以保证用户在查询时,可以快速地获取服务调用关系。其中,存储在redis中的服务调用关系队列的队列名称可以为服务名称+时间维度的形式,例如:tyc-user_2021-12-07-22。时间维度优选为1小时,这种设置方式可以增加用户查询服务调用关系时的速度,并且更利于存储。
在将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列之后,该方法还包括:基于服务调用关系队列,获取服务依赖拓扑关系。
如图4所示,在本实施例中,还提供了http接口,基于http接口查询某个服务的某个时间段的服务依赖拓扑关系,并将该服务依赖拓扑关系以关系图谱的形式在前端进行展示。其中,查询的最小时间维度,本领域技术人员可以根据实际需要进行设置,例如可以为1个小时。
常规的链路追踪中间件直接从elasticsearch、mysql等存储引擎中查询链路节点所有相关的链路日志进行计算,但是因为一次性取出该节点所有相关的链路路径日志,数据量是非常大的,甚至可能达到GB、TB级别,存储引擎无法提供这么大量的数据查询能力并且链路追踪中间件无法一次性处理这么大量的数据,所以很多时候就导致了服务依赖拓扑关系查询能力不可用。而本发明基于现有的分布式链路追踪中间件(例如zipkin、skywalking等)的服务依赖拓扑关系能力进行优化,提出了一套支持大数据量的、低延迟的服务依赖拓扑关系的计算方法;它不仅解决了现有开源框架无法支持大数据量的服务依赖拓扑关系计算能力的问题,而且将原本的十几秒乃至几十秒的时长,缩短至毫秒级别。针对符合OpenTracing(分布式追踪)标准的分布式链路追踪中间件设计的服务依赖拓扑关系能力的优化,不仅可以完成大数据量下的服务依赖拓扑关系的计算,而且极大地减少了服务依赖关系查询的时延。一方面能够迅速、准确地获取服务依赖拓扑关系,降低开发人员的使用成本,提高用户使用体验;另一方面,大大提高了分布式链路追踪装置的可用性,使其在大数据量下依然能完成服务依赖拓扑关系的计算。
图5是本发明一示例性实施例提供的服务依赖拓扑关系获取方法的架构示意图。如图5所示,采用的链路追踪中间件为zipkin,缓存为redis集群,存储引擎为elasticsearch集群。
示例性装置
图6是本发明一示例性实施例提供的服务依赖拓扑关系获取装置的结构示意图。如图6所示,本实施例包括:
链路路径日志获取模块601,配置为获取链路路径日志;
链路追踪中间件602,配置为对链路路径日志进行格式转换,得到第一结果;
队列设置模块603,配置为设置链路路径标识有界队列及服务调用关系队列;
拓扑能力计算集群604,配置为获取链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及链路路径中各链路节点的服务调用关系,将通过去重策略校验的链路路径的链路路径标识存储于对应的链路路径标识有界队列中;以及从链路路径标识有界队列中获取第一预设时间范围内的目标链路路径标识,并基于目标链路路径标识和第一结果确定目标链路路径标识对应的全局服务调用关系,将服务调用关系队列中不存在的全局服务调用关系存储于服务调用关系队列中,全局服务调用关系为由具有调用关系的服务组成的全局关系序列。
对于链路路径日志获取模块601、链路追踪中间件602、队列设置模块603和拓扑能力计算集群604的其他功能限定,可以参照对本发明提供的服务依赖拓扑关系获取方法的描述,此处不再赘述。
示例性电子设备
图7是本发明一示例性实施例提供的电子设备的结构。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。图7图示了根据本公开实施例的电子设备的框图。如图7所示,电子设备包括一个或多个处理器71和存储器72。
处理器71可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器72可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器71可以运行所述程序指令,以实现上文所述的本公开的各个实施例的软件程序的服务依赖拓扑关系获取的方法以及/或者其他期望的功能。在一个示例中,电子设备还可以包括:输入装置73和输出装置74,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置73还可以包括例如键盘、鼠标等等。
该输出装置74可以向外部输出各种信息。该输出设备74可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图7中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的服务依赖拓扑关系获取的方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的服务依赖拓扑关系获取的方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (13)
1.一种服务依赖拓扑关系获取方法,其特征在于,包括:
获取链路路径日志;
链路追踪中间件对所述链路路径日志进行格式转换,得到第一结果;
设置链路路径标识有界队列及服务调用关系队列;
拓扑能力计算集群获取所述链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及所述链路路径中各链路节点的服务调用关系,将通过去重策略校验的链路路径的链路路径标识存储于对应的所述链路路径标识有界队列中;
从所述链路路径标识有界队列中获取第一预设时间范围内的目标链路路径标识,并基于所述目标链路路径标识和所述第一结果确定所述目标链路路径标识对应的全局服务调用关系,将所述服务调用关系队列中不存在的所述全局服务调用关系存储于所述服务调用关系队列中,所述全局服务调用关系为由具有调用关系的服务组成的全局关系序列。
2.如权利要求1所述的方法,其特征在于,所述将所述服务调用关系队列中不存在的所述全局服务调用关系存储于所述服务调用关系队列之后,还包括:基于所述服务调用关系队列,获取服务依赖拓扑关系。
3.如权利要求1所述的方法,其特征在于,所述去重策略为:
若所述待筛选链路路径日志对应的链路路径的链路路径标识已经存在于与所述待筛选链路路径日志对应的链路路径标识有界队列中,则所述待筛选链路路径日志未通过校验;
若所述待筛选链路路径日志对应的链路路径中的链路节点的服务调用关系已经存在于与所述待筛选链路路径日志对应的服务调用关系队列中,则所述待筛选链路路径日志未通过校验。
4.如权利要求1所述的方法,其特征在于,所述拓扑能力计算集群中设置了扩容机制和/或随机取样机制;其中,
所述扩容机制为对所述链路路径标识有界队列的容量进行实时调整;
所述随机取样机制为所述链路路径标识有界队列达到存储上限时,随机抽取所述链路路径标识有界队列中的链路路径标识,并将随机抽取后的所述链路路径标识与通过去重策略校验且未存储于所述链路路径标识有界队列中的所述链路路径的所述链路路径标识存储于所述链路路径标识有界队列中;或者,分别随机抽取所述链路路径标识有界队列中的链路路径标识和通过去重策略校验且未存储于所述链路路径标识有界队列中的所述链路路径的所述链路路径标识,并将随机抽取后的所述链路路径标识存储于所述链路路径标识有界队列中。
5.如权利要求1所述的方法,其特征在于,所述链路路径标识有界队列包括一个或者多个链路路径标识有界队列,其中,每个链路路径标识有界队列都对应有唯一的队列名称;所述队列名称包括时间标识,所述时间标识为获取初始时间或者获取结束时间;所述获取初始时间为获取所述待筛选链路路径日志的起始时间;所述获取结束时间为获取所述待筛选链路路径日志的结束时间。
6.如权利要求5所述的方法,其特征在于,所述拓扑能力计算集群获取所述链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及所述链路路径中各链路节点的服务调用关系,包括:
所述拓扑能力计算集群从所述链路路径日志中获取第二预设时间范围内的预设数量的链路路径日志作为所述待筛选链路路径日志,其中,所述第二预设时间范围为所述获取初始时间与所述获取结束时间的时间间隔;
响应于对所述待筛选链路路径日志的处理结果,得到所述待筛选链路路径日志对应的链路路径的链路路径标识以及所述链路路径中各链路节点的服务调用关系。
7.如权利要求6所述的方法,其特征在于,所述响应于对所述待筛选链路路径日志的处理结果,得到所述待筛选链路路径日志对应的链路路径的链路路径标识以及所述链路路径中各链路节点的服务调用关系之后,还包括:
当所述时间标识为获取初始时间时,查找具有与所述获取初始时间相同的所述时间标识对应的所述链路路径标识有界队列;
所述将通过去重策略校验的链路路径的链路路径标识存储于对应的所述链路路径标识有界队列,包括:
根据所述去重策略校验所述待筛选链路路径日志,并将通过所述去重策略校验的所述链路路径的链路路径标识存储于对应的所述链路路径标识有界队列中。
8.如权利要求6所述的方法,其特征在于,所述响应于对所述待筛选链路路径日志的处理结果,得到所述待筛选链路路径日志对应的链路路径的链路路径标识以及所述链路路径中各链路节点的服务调用关系之后,还包括:
当所述时间标识为获取结束时间时,查找具有与所述获取结束时间相同的所述时间标识对应的所述链路路径标识有界队列;
所述将通过去重策略校验的链路路径的链路路径标识存储于对应的所述链路路径标识有界队列,包括:
根据所述去重策略校验所述待筛选链路路径日志,并将通过所述去重策略校验的所述链路路径的链路路径标识存储于对应的所述链路路径标识有界队列中。
9.如权利要求1所述的方法,其特征在于,在得到通过所述去重策略校验的所述链路路径的所述链路路径标识之后,还包括:
将通过所述去重策略校验的所述链路路径中各链路节点的服务调用关系存储于所述服务调用关系队列,其中,通过所述去重策略校验的所述链路路径中各链路节点的服务调用关系为与所述链路路径中各链路节点具有直接调用关系的服务。
10.如权利要求1所述的方法,其特征在于,所述服务调用关系队列中的每个服务调用关系队列对应一个或者多个所述链路路径标识有界队列。
11.一种服务依赖拓扑关系获取装置,其特征在于,所述装置包括:
链路路径日志获取模块,配置为获取链路路径日志;
链路追踪中间件,配置为对所述链路路径日志进行格式转换,得到第一结果;
队列设置模块,配置为设置链路路径标识有界队列及服务调用关系队列;
拓扑能力计算集群,配置为获取所述链路路径日志中的待筛选链路路径日志对应的链路路径的链路路径标识以及所述链路路径中各链路节点的服务调用关系,将通过去重策略校验的链路路径的链路路径标识存储于对应的所述链路路径标识有界队列中;以及从所述链路路径标识有界队列中获取第一预设时间范围内的目标链路路径标识,并基于所述目标链路路径标识和所述第一结果确定所述目标链路路径标识对应的全局服务调用关系,将所述服务调用关系队列中不存在的所述全局服务调用关系存储于所述服务调用关系队列中,所述全局服务调用关系为由具有调用关系的服务组成的全局关系序列。
12.一种计算机可读存储介质,所述存储介质中存储有多条指令,所述多条指令用于由处理器加载并执行如权利要求1-10中任一项所述方法。
13.一种电子设备,其特征在于,所述电子设备,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令用于由所述存储器存储,并由所述处理器加载并执行如权利要求1-10中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210240854.1A CN114338494B (zh) | 2022-03-13 | 2022-03-13 | 服务依赖拓扑关系获取方法和装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210240854.1A CN114338494B (zh) | 2022-03-13 | 2022-03-13 | 服务依赖拓扑关系获取方法和装置、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114338494A true CN114338494A (zh) | 2022-04-12 |
CN114338494B CN114338494B (zh) | 2022-05-27 |
Family
ID=81033196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210240854.1A Active CN114338494B (zh) | 2022-03-13 | 2022-03-13 | 服务依赖拓扑关系获取方法和装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114338494B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106790718A (zh) * | 2017-03-16 | 2017-05-31 | 北京搜狐新媒体信息技术有限公司 | 服务调用链路分析方法及系统 |
US20190190773A1 (en) * | 2017-12-15 | 2019-06-20 | International Business Machines Corporation | Building and fixing a dynamic application topology in a cloud based environment leveraging log file data |
CN110445643A (zh) * | 2019-07-25 | 2019-11-12 | 泰康保险集团股份有限公司 | 异步微服务调用链路跟踪方法、装置、介质及电子设备 |
CN112612675A (zh) * | 2020-12-25 | 2021-04-06 | 山东经伟晟睿数据技术有限公司 | 微服务架构下的分布式大数据日志链路跟踪方法及系统 |
-
2022
- 2022-03-13 CN CN202210240854.1A patent/CN114338494B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106790718A (zh) * | 2017-03-16 | 2017-05-31 | 北京搜狐新媒体信息技术有限公司 | 服务调用链路分析方法及系统 |
US20190190773A1 (en) * | 2017-12-15 | 2019-06-20 | International Business Machines Corporation | Building and fixing a dynamic application topology in a cloud based environment leveraging log file data |
CN110445643A (zh) * | 2019-07-25 | 2019-11-12 | 泰康保险集团股份有限公司 | 异步微服务调用链路跟踪方法、装置、介质及电子设备 |
CN112612675A (zh) * | 2020-12-25 | 2021-04-06 | 山东经伟晟睿数据技术有限公司 | 微服务架构下的分布式大数据日志链路跟踪方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114338494B (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10560465B2 (en) | Real time anomaly detection for data streams | |
US11327749B2 (en) | System and method for generating documentation for microservice based applications | |
US9781020B2 (en) | Deploying applications in a networked computing environment | |
CN112383533A (zh) | 报文格式转换方法及装置 | |
CN109344046B (zh) | 一种数据处理方法、装置、介质及电子设备 | |
US20160283522A1 (en) | Matching untagged data sources to untagged data analysis applications | |
CN110704025A (zh) | 编码规范工具的生成方法和装置、存储介质、电子设备 | |
CN114398396A (zh) | 数据查询方法、存储介质和计算机程序产品 | |
CN112671602B (zh) | 边缘节点的数据处理方法、装置、系统、设备和存储介质 | |
CN107633080B (zh) | 一种用户任务处理方法及装置 | |
WO2019047677A1 (zh) | 一种应用下载来源的监测方法及装置 | |
CN114338494B (zh) | 服务依赖拓扑关系获取方法和装置、存储介质和电子设备 | |
Zhou et al. | A runtime verification based trace-oriented monitoring framework for cloud systems | |
CN115297029A (zh) | 工业互联网标识解析性能的测试方法和装置、设备和介质 | |
CN115357827A (zh) | 区块链浏览器组件和电子设备 | |
CN112862245A (zh) | 数据交换方法、装置以及电子设备 | |
CN111177100A (zh) | 一种训练数据处理方法、装置及存储介质 | |
CN112988560A (zh) | 测试系统健壮性的方法和装置 | |
JP7470769B1 (ja) | クラウドのapiの変更を分析する方法 | |
US20160283521A1 (en) | Matching untagged data sources to untagged data analysis applications | |
US9436523B1 (en) | Holistic non-invasive evaluation of an asynchronous distributed software process | |
CN113031960B (zh) | 代码编译方法、装置、服务器及存储介质 | |
US20240004734A1 (en) | Event processing systems and methods | |
CN116932362A (zh) | 一种应用程序检测方法、装置、电子设备和存储介质 | |
CN113780570A (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 |