一种微服务架构下的分布式链路跟踪方法技术

技术编号:23193454 阅读:20 留言:0更新日期:2020-01-24 17:08
本发明专利技术属于计算机技术领域,更具体地,涉及一种微服务架构下的分布式链路跟踪方法。该分布式跟踪方法在调用者发起请求时先进行跟踪概率计算,根据计算结果判断是否进行跟踪,如果进行跟踪,则记录每个链路调用信息,生成一个完整的跟踪路线。本发明专利技术能够高效可靠的记录错误请求,并快速定位异常服务与异常原因,实时查看各个服务处理请求的耗时情况,能够生成请求依赖拓扑图,展示请求调用链,找出链路上多余的依赖调用。本发明专利技术能够高性能、低入侵的实现分布式服务间的链路调用跟踪,统计服务调用频率、评估服务性能容量。

A distributed link tracking method based on microservice architecture

【技术实现步骤摘要】
一种微服务架构下的分布式链路跟踪方法
本专利技术属于计算机
,更具体地,涉及一种微服务架构下的分布式链路跟踪方法。
技术介绍
随着微服务架构的流行,各个服务被解耦拆分的更加细致,一次请求往往需要涉及到多个服务的执行结果。而且这些服务可能是由不同的团队使用不同的编程语言来实现,并且部署在多台服务器,横跨多个不同数据中心,这些使得分布式系统变得日趋庞大与复杂。因此,当需要对系统性能、容量、调用依赖进行分析时,将会变得异常困难,同时,一旦客户端发起的请求失败,也很难定位到具体哪个服务出现问题。传统的解决方案为:通过介入各服务所在的服务器,通过肉眼观测压测时当前服务器性能指标;通过海量日志分析,进行问题定位。然而,这种方案存在以下几个缺陷:1.需要多个部门同时配合,协调工作难度大;2.问题定位需要从源头一个服务一个服务往下分析,耗时耗力。
技术实现思路
针对现有技术方案存在的不足之处,本专利技术提出了一种微服务结构下的分布式链路跟踪方法,该分布式跟踪方法在调用者发起请求时先进行跟踪概率计算,根据计算结果判断是否进行跟踪,如果进行跟踪,则记录每个链路调用信息,生成一个完整的跟踪路线。本专利技术采用如下技术方案:一种微服务架构下的分布式链路跟踪方法,包括以下步骤,S1:调用者发起请求;S2:计算跟踪概率,判断是否跟踪本次请求,若不跟踪则直接发送请求,否则转到步骤S3;S3:构造链路上下文信息,生成一个全局唯一的traceid,通过traceid串联整个调用链;设置parentid为0,生成一个全局唯一的spanid,作为调用链入口;S4:记录链路调用信息;S5:构造协议消息,将traceid与spanid设置到私有协议的消息头部并开启协议的链路跟踪开关,记录发送时间戳;S6:请求下游服务;S7:下游子系统接收到请求消息;S8:下游子系统取得该次请求附带的traceid以及spanid,并将附带spanid作为parentid记录下,并生成自己的spanid,构造链路上下文信息;S9:下游子系统记录链路调用信息;S10:下游子系统处理请求,如果还需要请求其他下游子系统服务,则转到步骤S5,否则日志输出链路调用信息并返回。本技术方案进一步的优化,还包括步骤S11,所有请求执行完毕,进行日志采集、清洗、分析、聚合并存储,并进行查询展示。本技术方案进一步的优化,所述步骤S2中不跟踪则直接发送请求,请求失败进行链路回溯。本技术方案更进一步的优化,所述链路回溯包括以下步骤,失败节点生成traceid,并生成parentid与spanid,通过将traceid与parentid设置到响应消息头部回传至上游节点;上游节点获取附带的traceid与parentid,并将附带parentid设置为自己的spanid,重新生成parentid,再将traceid与parentid回传至上游节点;直至抵达根节点,获取附带的traceid与parentid,并将附带parentid设置为自己的spanid,并将parentid设为0,并日志输出链路调用信息。本技术方案进一步的优化,所述步骤S3中traceid和parentid采用snowflake算法生成。本技术方案进一步的优化,所述步骤S5,通过设定私有协议消息头部字段,通过链路跟踪上下文信息,串联整条链路。本技术方案进一步的优化,所述链路调用信息包括主调服务名、主调服务地址、被调服务名、被调服务地址、被调接口名、调用事件以及其他自定义标签中的一种或者多种。本技术方案进一步的优化,所述步骤S8中采用snowflake算法生成spanid。与现有技术相比,本专利技术具有如下的有益效果:1.本专利技术能够高效可靠的记录错误请求,并快速定位异常服务与异常原因;2.本专利技术能够实时查看各个服务处理请求的耗时情况;3.本专利技术能够生成请求依赖拓扑图,展示请求调用链,找出链路上多余的依赖调用;4.本专利技术能够高性能、低入侵的实现分布式服务间的链路调用跟踪;5.本专利技术能够统计服务调用频率、评估服务性能容量。附图说明图1是分布式链路跟踪方法流程图;图2是分布式链路跟踪方法示例图。具体实施方式为进一步说明各实施例,本专利技术提供有附图。这些附图为本专利技术揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本专利技术的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。现结合附图和具体实施方式对本专利技术进一步说明。参阅图1所示,本专利技术优选一实施例的一种微服务架构下的分布式链路跟踪方法流程图,包括以下步骤:S1:调用者发起请求。S2:计算跟踪概率,判断是否跟踪本次请求,如果不跟踪则直接发送请求,否则转到步骤S3。跟踪概率的计算方法如下:根据程序启动时设定的跟踪概率参数值,并调用随机数生成函数随机生成特定范围的一个随机数,通过判断该随机数是否落于跟踪概率内决定是否对该次请求进行链路跟踪。假如概率为1/1000,即发送1000个请求只跟踪其中一个请求,调用随机数生成函数随机生成1到1000内的一个随机数,如果该随机数为1,则进行链路跟踪,其他数字则不进行跟踪。通过使跟踪概率可控化,可以大大提供程序的灵活性:当程序处于调试阶段,调大跟踪频率,可以更快更准确的复现bug;当程序处于上线阶段,调小跟踪频率,可以大大减轻网络带宽消耗以及对后端存储的占用,提高系统整体性能。通过预设跟踪采样概率,提高链路跟踪性能。概率越小,则更多请求无需进行跟踪;程序本身可以节省更多的计算消耗,同时更多请求不再需要传递跟踪信息,如traceid与spanid,节省网络资源。S3:构造链路上下文信息,利用snowflake算法生成一个全局唯一的traceid,通过traceid串联整个调用链;设置parentid为0,利用snowflake算法生成一个全局唯一的spanid,作为调用链入口。一个请求产生一条调用链,一个traceid唯一标记一条调用链。一条调用链上存在多个节点,一个服务器相当于一个节点,一个spanid唯一标识该次链路上的一个节点。S4:记录链路调用信息,包括主调服务名、主调服务地址、被调服务名、被调服务地址、被调接口名、调用事件以及其他自定义标签。S5:构造协议消息,将traceid与spanid设置到私有协议的消息头部并开启协议的链路跟踪开关,记录发送时间戳。S6:请求下游服务。S7:下游子系统接收到请求消息。S8:下游子系统取得该次请求附带的traceid以及spanid,并将附带spanid作为parentid记录下,并利用snowflake算法生成自己的spanid,构造链路上本文档来自技高网...

【技术保护点】
1.一种微服务架构下的分布式链路跟踪方法,其特征在于,包括以下步骤,/nS1:调用者发起请求;/nS2:计算跟踪概率,判断是否跟踪本次请求,若不跟踪则直接发送请求,否则转到步骤S3;/nS3:构造链路上下文信息,生成一个全局唯一的trace id,通过trace id串联整个调用链;设置parent id为0,生成一个全局唯一的span id,作为调用链入口;/nS4:记录链路调用信息;/nS5:构造协议消息,将trace id与span id设置到私有协议的消息头部并开启协议的链路跟踪开关,记录发送时间戳;/nS6:请求下游服务;/nS7:下游子系统接收到请求消息;/nS8:下游子系统取得该次请求附带的trace id以及spanid,并将附带span id作为parent id记录下,并生成自己的span id,构造链路上下文信息;/nS9:下游子系统记录链路调用信息;/nS10:下游子系统处理请求,如果还需要请求其他下游子系统服务,则转到步骤S5,否则日志输出链路调用信息并返回。/n

【技术特征摘要】
1.一种微服务架构下的分布式链路跟踪方法,其特征在于,包括以下步骤,
S1:调用者发起请求;
S2:计算跟踪概率,判断是否跟踪本次请求,若不跟踪则直接发送请求,否则转到步骤S3;
S3:构造链路上下文信息,生成一个全局唯一的traceid,通过traceid串联整个调用链;设置parentid为0,生成一个全局唯一的spanid,作为调用链入口;
S4:记录链路调用信息;
S5:构造协议消息,将traceid与spanid设置到私有协议的消息头部并开启协议的链路跟踪开关,记录发送时间戳;
S6:请求下游服务;
S7:下游子系统接收到请求消息;
S8:下游子系统取得该次请求附带的traceid以及spanid,并将附带spanid作为parentid记录下,并生成自己的spanid,构造链路上下文信息;
S9:下游子系统记录链路调用信息;
S10:下游子系统处理请求,如果还需要请求其他下游子系统服务,则转到步骤S5,否则日志输出链路调用信息并返回。


2.如权利要求1所述的微服务架构下的分布式链路跟踪方法,其特征在于:还包括步骤S11,所有请求执行完毕,进行日志采集、清洗、分析、聚合并存储,并进行查询展示。


3.如权利要求1所述的微服务架构下的分布式链路跟踪方法,其特征在于:所述步骤S2中不跟踪则直接发送请求,请求失败进行链路回溯。


4.如...

【专利技术属性】
技术研发人员:蔡文勇王和建邢东海
申请(专利权)人:家乡互动厦门网络科技有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1