分布式链路标签的处理方法,装置及应用与流程

文档序号:35908651发布日期:2023-10-29 07:37阅读:38来源:国知局
分布式链路标签的处理方法,装置及应用与流程

本发明涉及分布式链路,尤其涉及一种分布式链路标签的处理方法,装置及应用。


背景技术:

1、随着互联网的快速发展,系统的架构也越来越复杂,为应对高并发大数据量需求的系统出现,微服务架构应运而生,利用微服务架构,一个完整系统的功能模块被拆分为多个小而专的微服务。微服务架构提高了现代互联网应用应对高并发量以及快速需求变化的能力,但也提高了程序物理上的分布性,系统在内部业务流程调用中经历的节点链也越来越多,而节点之间的拓扑结构较为复杂,当某个节点出问题时,排查整个调用链条中的故障节点定位非常困难。据此,出现了分布式链路追踪技术(tracing)。分布式链路追踪技术可以记录一个请求是如何在整个系统不同模块间进行流转、整个调用链路上的各个模块间的调用关系如何、每个微服务处理的时间长短、处理的结果是否正确等,上述记录的信息对整个系统的运维、性能分析和故障追踪都有帮助。

2、目前常用的分布式链路追踪工具(或称跨度链路生成工具),比如有open tracing、open census、open telemetry、ebpf等协议,jaeger、zipkin、skywalking、deepflow、datadog等。不同的分布式链路追踪工具对不同语言的支持不尽相同,收集的数据格式也会有些差别,适用的业务场景也不同,作为举例,比如skywalking链路追踪系统主要用于对同步实时交易进行链路追踪。分布式链路追踪工具通常还提供可观测性分析平台oap(全称observability analysis platform)服务,用于从服务和云原生等基础设施中收集数据、分析数据、聚合数据以及可视化数据。基于分布式链路追踪工具的oap服务可以为业务场景(作为举例,比如量化交易)的应用服务搭建分布式链路可观测平台——比如基于skywalking搭建的comstar分布式链路可观测平台cdtop(comstar distributed tracingobservable platform,其中,comstar是一个现有技术中的一种交易管理系统),通过分布式链路可观测平台可以分析和观测业务场景应用服务的链路trace数据。在分布式链路系统中,用户请求或事务由链路表示,链路被分解成多个跨度span,一条链路由多个跨度span组成,跨度span表示链路中的单个逻辑操作(逻辑运行单元),比如,用户请求期间的方法调用(或称函数调用)可以用跨度span 表示。一个跨度span可以拥有自己的子跨度(通常称子span)。链路跨度span提供可用于调试可用性和性能问题的请求、错误和持续时间指标等,每个跨度span 包含以下信息:操作名称、起始时间、结束时间、跨度的标签tag、跨度的日志log、跨度的上下文context、跨度间关系reference等。其中,跨度的标签tag由键值对key=value构成,键值对中的键key为string类型,键值对中的值value可以是字符串、布尔或者数字类型,通常是字符串格式。

3、分布式链路可观测平台在观测业务场景应用服务的链路数据时,需要根据不同业务场景应用服务的不同方法参数类型的业务属性生成标签(业务标签)tag并在链路跨度span中注入前述标签tag,即将生成的标签tag添加到对应的本地跨度local span对象中。目前,标签的生成和注入普遍采用的方法是通过定制化插件将固化配置的方法参数类型及属性名称直接设定为要注入链路跨度的标签。参见图1所示,定制化插件通常包括内置的定制化配置模块、链路生成模块和标签生成模块,来自于业务场景应用服务的固化配置的类和方法信息导入到定制化配置模块中,经过定制化配置模块生成预设方法参数类型的配置数据——称为方法参数及标签配置,参见图2所示,然后将方法参数及标签配置导入链路生成模块,通过链路生成模块和标签生成模块的内置调用实现方法调用链路trace和标签tag的生成,以及标签tag注入(将方法加入追踪链路时,在方法上增加标签)。在定制化插件中,链路及标签生成的时序图参见图3所示:从定制化配置模块中获取配置集合map;创建链路跨度span;从前述配置集合map中获取标签配置集合map1,根据标签配置集合map1中的标签配置生成标签对象并存入标签集合map2,将标签集合map2对象设置进链路跨度span对象中(即注入标签)。

4、上述方案存在如下缺点:一方面,上述标签生成和注入方案是一种固化预置注入方法——在定制化配置模块中,需要拦截的类、方法参数及标签必须是预设的方法参数类型(比如图1中示例的第一类方法参数类型methodargtypeone,其对应业务语义的固化属性)和固化配置(比如图1中示例的与第一类方法参数类型methodargtypeone对应的第一类方法参数及标签配置methodargtagconfigone,需要预置固化属性)才可以成功生产标签,无法根据业务动态进行标签的生成和注入。也就是说,当需要拦截的方法参数类型对应的是业务语义的动态属性时,无法基于前述固化配置预置的参数属性名和属性值生成业务标签,进而也无法注入标签。

5、另一方面,针对不同的业务场景应用服务,对应不同的固化配置的预设方法参数类型,不同固化配置的方法参数类型接入定制化配置模块时需要采用不同的解析方式,增加了解析的复杂度,随着业务发展和服务方法参数的更新,会导致增加接入流程复杂度,降低接入效率。

6、再一方面,因为定制化配置中的标签需要根据不同业务场景中不同方法参数类型的业务属性进行逐个设置,由于业务场景各异、业务属性繁多,导致配置的标签数量大且更新变动频繁,占用了较多的算力和人力成本。同时,随着业务(比如量化交易业务)持续发展,接入的应用服务也在不断迭代更新,需要生产的链路和标签范围和数量也不断扩大,定制化配置模块中需要设置的标签也持续增加(同步更新),增加了定制化配置模块与应用服务之间的维护成本。而且,定制化配置与应用服务需要拦截的类和方法之间的版本同步更新可能存在不一致而导致接入错漏的风险。


技术实现思路

1、本发明的目的在于:克服现有技术的不足,提供一种分布式链路标签的处理方法,装置及应用。本发明为不同业务场景应用服务接入观察平台提供了统一的方法参数类型,从而实现了标准化接入流程,降低接入门槛,减少接入成本,减小接入风险。同时,解决了现有拦截组件不支持业务的动态属性的问题。

2、为实现上述目标,本发明提供了如下技术方案:

3、一种分布式链路标签的处理方法,包括如下步骤:

4、通过动态字段生成器为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;

5、通过定制化插件处理前述方法参数及标签配置,根据javaagent机制对需要拦截的类和方法进行拦截,生成方法调用链路;

6、通过定制化插件与标签生成器的集成调用进行标签处理,将处理后的标签配置到前述链路的链路跨度span对象中;一个链路由多个所述链路跨度span对象组成,所述标签由一组键值对构成。

7、进一步,在所述方法参数及标签配置中,配置对象包括类、方法和标签,其中,方法的参数采用统一结构化定义的动态字段dynamicfields类型,标签的配置信息包括标签名和标签值,所述标签名为前述动态字段dynamicfields,所述标签值通过表达式arg[0].tostring()从参数值中获得。

8、进一步,动态字段生成器设置在分布式链路可观测平台中并与业务场景应用服务通信连接;

9、所述动态字段生成器被配置为:获取业务场景应用服务中需要拦截的类和方法信息;根据前述需要拦截的类和方法信息得到需要拦截的类、方法参数和标签信息,对需要拦截的类、方法参数和标签进行统一结构化处理,从而为前述业务场景应用服务创建方法参数类型对象;以及,将创建的方法参数类型对象发送至前述业务场景应用服务;

10、所述业务场景应用服务接收前述方法参数类型对象后,将其导入需要拦截的类和方法信息并使用,得到处理后的类和方法信息。

11、进一步,所述定制化插件与业务场景应用服务和标签生成器连接,被配置为:从业务场景应用服务中读取前述处理后的类和方法信息,并将其导入到定制化配置模块,通过定制化配置模块生成对应的方法参数及标签配置,并将前述方法参数及标签配置导入链路生成模块以用于生成方法调用链路;

12、所述链路生成模块被配置为:根据javaagent机制对需要拦截的类和方法使用byte-buddy动态修改java类的二进制对方法进行切面拦截,以生成方法调用链路。

13、进一步,所述标签生成器连接定制化插件的链路生成模块;

14、在生成方法调用链路时,所述链路生成模块通过集成调用所述标签生成器来进行标签处理;在标签处理完后,所述标签生成器通过集成前述链路生成模块来将处理后的标签注入前述链路中。

15、进一步,所述标签生成器处理标签的步骤包括:

16、从定制化插件中获取标签集合;

17、对前述标签集合中的元素依次进行模板匹配、标签解析和标签过滤操作,得到过滤后的标签集合;

18、调用定制化插件中的链路生成模块以将所述过滤后的标签集合配置到链路跨度span对象中。

19、进一步,所述标签集合通过定制化插件处理后得到,处理步骤如下:

20、从定制化配置模块生成的方法参数及标签配置中获取配置集合;

21、创建链路跨度span;

22、从前述配置集合中获取与标签相关的标签配置集合;

23、根据所述标签配置集合中的标签配置信息生成标签对象,并将标签存入集合,得到前述标签集合。

24、本发明还提供了一种分布式链路标签的处理装置,包括动态字段生成器、定制化插件和标签生成器,

25、所述动态字段生成器,用于为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;

26、所述定制化插件,用于处理前述方法参数及标签配置,根据javaagent机制对需要拦截的类和方法进行拦截,生成方法调用链路;

27、所述标签生成器,用于处理标签;

28、其中,所述定制化插件与标签生成器之间通过集成调用进行标签处理,处理后的标签配置到前述链路的链路跨度span对象中;一个链路由多个所述链路跨度span对象组成,所述标签由一组键值对构成。

29、本发明还提供了一种分布式链路追踪系统,包括分布式链路可观测平台,所述分布式链路可观测平台包括动态字段生成器、定制化插件和标签生成器;

30、所述动态字段生成器,用于为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;

31、所述定制化插件,用于处理前述方法参数及标签配置,根据机制对需要拦截的类和方法进行拦截,生成方法调用链路;

32、所述标签生成器,用于处理标签;

33、其中,所述定制化插件与标签生成器之间通过集成调用进行标签处理,处理后的标签配置到前述链路的链路跨度span对象中;一个链路由多个所述链路跨度span对象组成,所述标签由一组键值对构成。

34、本发明还提供了一种分布式系统,包括前述的分布式链路追踪系统。

35、本发明由于采用以上技术方案,与现有技术相比,具有以下的优点和积极效果:为不同业务场景应用服务接入观察平台提供了统一的方法参数类型,从而实现了标准化接入流程,降低接入门槛,减少接入成本,减小接入风险。同时,解决了现有拦截组件不支持业务的动态属性的问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1