掌桥专利:专业的专利平台
掌桥专利
首页

一种基于流量拦截的分布式链路追踪方法

文献发布时间:2024-04-18 20:01:23


一种基于流量拦截的分布式链路追踪方法

技术领域

本发明涉及服务器技术领域,具体是一种基于流量拦截的分布式链路追踪方法。

背景技术

随着互联网业务得到快速发展,传统意义上得到软件架构也日益变得复杂;

为了适应海量用户的高并发请求,避免服务器瘫痪,系统中越来越多的组件开始走向分布式化,如单体架构拆分为微服务、服务内缓存变为分布式缓存、服务组件通信变为分布式消息,这些组件共同构成了繁杂的分布式网络;分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。

在应用服务的去中心化、微服务化、容器化的大趋势背景下,面对急剧攀升的微服务,现有技术中的链路追踪方法无法快速发现有问题的服务,无法理清服务之间的依赖关系,同时无法对以容器化部署的微服务进行全面的监控、预警以及故障定位。

因此,针对上述问题提出一种基于流量拦截的分布式链路追踪方法。

发明内容

为了弥补现有技术的不足,解决上述至少一个问题,本发明提出的一种基于流量拦截的分布式链路追踪方法。

一种基于流量拦截的分布式链路追踪方法,该追踪方法包括以下步骤:

步骤S1:请求发出,进入应用服务之前,由拦截模块进行拦截;

步骤S2:拦截模块将请求经iptable规则重定向后,发送至追踪数据处理模块;

步骤S3:追踪数据处理模块对欲进入应用服务的请求进行追踪数据处理,判断请求头部有无追踪数据;

步骤S4:经过追踪数据处理模块后的请求头部,携带追踪数据进入应用服务;

步骤S5:应用服务响应后,请求头部携带追踪数据返回至追踪数据处理模块,并上报至追踪数据聚合模块,用于生成可视化图表;

其中,请求经追踪数据处理模块处理时,判断请求头部有无追踪数据;若请求头部没有任何追踪数据,则会视为该请求为新的链路,需创建追踪数据,并记录SR时间,即serverreceived,用于表示请求接收时间;若请求头部有追踪数据,则保留追踪数据,同时记录SR时间,用于表示请求接收时间。

优选的,所述追踪数据处理模块包括追踪数据生成模块;所述追踪数据生成模块用于解析请求,并根据请求头部中是否有追踪数据选择创建或是更新追踪数据,随后再将请求发往应用服务。

优选的,所述追踪数据处理模块还包括追踪数据上报模块;所述追踪数据上报模块负责当请求响应后,将请求的完整追踪数据上报至追踪数据聚合模块。

优选的,所述应用服务中包括追踪数据传播模块,用于当应用服务接收到追踪数据生成模块产生的请求转发后,记录追踪数据。

优选的,所述追踪数据聚合模块,负责将上报的追踪数据串联,并形成可视化的图表。

优选的,所述步骤S3中,追踪数据处理模块对欲进入应用服务的请求进行追踪数据处理,并判断请求头部有无追踪数据;经追踪数据处理模块中的追踪数据生成模块对请求进行解析,判断请求头部有无追踪数据。

优选的,所述步骤S4中,携带有追踪数据的请求头部经追踪数据生成模块转发至追踪数据传播模块中,应用服务响应后,追踪数据传播模块将请求转发至追踪数据生成模块,并由追踪数据生成模块在追踪数据中记录SS时间,即serversent,用于表示请求响应的时间。

优选的,所述步骤S4中,请求头部携带追踪数据进入应用服务后,若应用服务还需要请求子服务,则追踪数据会被追踪数据传播模块放入请求头中进行传递,重复步骤S1-S5。

本发明的有益之处在于:

本发明通过设置拦截模块、追踪数据处理模块以及追踪数据聚合模块,在请求产生并在进入应用服务之前,由拦截模块拦截,并转发至追踪数据处理模块,由追踪数据生成模块判断请求头部有无追踪数据,并根据请求头部有无追踪数据选择创建或是更新追踪数据,携带有追踪数据的请求头部转发至应用服务,经应用服务响应并转发请求至追踪数据生成模块,记录请求响应的时间,并将完整的追踪数据上报给追踪数据聚合模块,形成可视化图表,相对于现有技术,该种链路追踪方法,能够快速找出存在问题的服务,并理清服务之间的依赖关系,能够对微服务提供全面的监控、预警及故障定位。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本发明一种实施例的链路追踪方法的流程图;

图2为本发明一种实施例中链路追踪方法演示示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1-图2所示,一种基于流量拦截的分布式链路追踪方法,该追踪方法包括以下步骤:

步骤S1:请求发出,进入应用服务之前,由拦截模块进行拦截;

步骤S2:拦截模块将请求经iptable规则重定向后,发送至追踪数据处理模块;

步骤S3:追踪数据处理模块对欲进入应用服务的请求进行追踪数据处理,判断请求头部有无追踪数据;

步骤S4:经过追踪数据处理模块后的请求头部,携带追踪数据进入应用服务;

步骤S5:应用服务响应后,请求头部携带追踪数据返回至追踪数据处理模块,并上报至追踪数据聚合模块,用于生成可视化图表;

其中,请求经追踪数据处理模块处理时,判断请求头部有无追踪数据;若请求头部没有任何追踪数据,则会视为该请求为新的链路,需创建追踪数据,并记录SR时间,即serverreceived,用于表示请求接收时间;若请求头部有追踪数据,则保留追踪数据,同时记录SR时间,用于表示请求接收时间。

作为本发明的一种实施方式,所述追踪数据处理模块包括追踪数据生成模块;所述追踪数据生成模块用于解析请求,并根据请求头部中是否有追踪数据选择创建或是更新追踪数据,随后再将请求发往应用服务。

作为本发明的一种实施方式,所述追踪数据处理模块还包括追踪数据上报模块;所述追踪数据上报模块负责当请求响应后,将请求的完整追踪数据上报至追踪数据聚合模块。

作为本发明的一种实施方式,所述应用服务中包括追踪数据传播模块,用于当应用服务接收到追踪数据生成模块产生的请求转发后,记录追踪数据。

作为本发明的一种实施方式,所述追踪数据聚合模块,负责将上报的追踪数据串联,并形成可视化的图表。

作为本发明的一种实施方式,所述步骤S3中,追踪数据处理模块对欲进入应用服务的请求进行追踪数据处理,并判断请求头部有无追踪数据;经追踪数据处理模块中的追踪数据生成模块对请求进行解析,判断请求头部有无追踪数据。

作为本发明的一种实施方式,所述步骤S4中,携带有追踪数据的请求头部经追踪数据生成模块转发至追踪数据传播模块中,应用服务响应后,追踪数据传播模块将请求转发至追踪数据生成模块,并由追踪数据生成模块在追踪数据中记录SS时间,即serversent,用于表示请求响应的时间。

作为本发明的一种实施方式,所述步骤S4中,请求头部携带追踪数据进入应用服务后,若应用服务还需要请求子服务,则追踪数据会被追踪数据传播模块放入请求头中进行传递,重复步骤S1-S5。

具体的,如附图2所示,为一次完整的链路追踪步骤,包括:

A1:在请求进入应用服务之前,被拦截模块定义的iptable规则重定向到追踪数据生成模块。

A2:追踪数据生成模块对进入应用服务的请求进行追踪数据处理。

A3:请求头部如果没有任何追踪数据,则会视为此次请求是一个新的链路,创建追踪数据:链路唯一标识traceID,该次请求的唯一标识spanID,同时记录SR时间(serverreceived)用于表示请求接收的时间。

A4:请求头部如果有追踪数据,保留追踪数据,同时记录SR时间(serverreceived)用于表示请求接收的时间。

A5:请求头部携带追踪数据,进入应用服务。

A6:如果应用服务需要请求子服务,追踪数据会被追踪数据传播模块放入请求头进行传递。

A7:从应用服务发出的请求被拦截模块通过iptable拦截转发往追踪数据处理模块。

A8:追踪数据生成模块对从应用服务发出的请求进行追踪数据处理。

A9:请求头部如果没有任何追踪数据,则会视为此次请求是一个新的链路,创建追踪数据:链路唯一标识traceID,该次请求的唯一标识spanID,同时记录CS时间(clientsent)用于表示请求发送的时间。

A10:请求头部如果有追踪数据,创建新请求追踪数据:保留traceID,创建新的spanID,parentSpanID设为上一个spanID,同时记录CS时间(client sent)用于表示请求发送的时间。

A11:该请求发往子服务,步骤参照1-9。

A12:当子服务返回响应,追踪数据生成模块会在追踪数据里记录SS时间(serversent)用于表示请求响应的时间。

A13:该请求的追踪数据traceID,spanID,parentSpanID,CS,CR记录完毕,可上报追踪数据聚合模块。

工作原理:通过设置拦截模块、追踪数据处理模块以及追踪数据聚合模块,在请求产生并在进入应用服务之前,由拦截模块拦截,并转发至追踪数据处理模块,由追踪数据生成模块判断请求头部有无追踪数据,并根据请求头部有无追踪数据选择创建或是更新追踪数据,携带有追踪数据的请求头部转发至应用服务,经应用服务响应并转发请求至追踪数据生成模块,记录请求响应的时间,并将完整的追踪数据上报给追踪数据聚合模块,形成可视化图表,相对于现有技术,该种链路追踪方法,能够快速找出存在问题的服务,并理清服务之间的依赖关系,能够对微服务提供全面的监控、预警及故障定位。

在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。

相关技术
  • 医学图像的病灶定位识别方法、装置、设备及存储介质
  • 图像中文本的识别方法及装置、电子设备、存储介质
  • 物品识别方法、装置及设备、存储介质、电子装置
  • 图像特征识别方法、相关装置及存储介质
  • 图像识别方法及装置、布控系统、计算机可读存储介质
  • 图像识别方法及装置、图像获取方法及设备、计算机设备及非易失性计算机可读存储介质
  • 图像识别方法及装置、图像获取方法及设备、计算机设备及非易失性计算机可读存储介质
技术分类

06120116551690