CN116962407A - 分布式链路标签的处理方法,装置及应用 - Google Patents
分布式链路标签的处理方法,装置及应用 Download PDFInfo
- Publication number
- CN116962407A CN116962407A CN202310946375.6A CN202310946375A CN116962407A CN 116962407 A CN116962407 A CN 116962407A CN 202310946375 A CN202310946375 A CN 202310946375A CN 116962407 A CN116962407 A CN 116962407A
- Authority
- CN
- China
- Prior art keywords
- label
- link
- configuration
- tag
- class
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 6
- 238000000034 method Methods 0.000 claims abstract description 252
- 238000012545 processing Methods 0.000 claims abstract description 48
- 230000007246 mechanism Effects 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 claims description 9
- 238000001914 filtration Methods 0.000 claims description 4
- 230000008676 import Effects 0.000 claims description 4
- 229910002056 binary alloy Inorganic materials 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims description 2
- 101150064138 MAP1 gene Proteins 0.000 description 4
- 101150009249 MAP2 gene Proteins 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000007711 solidification Methods 0.000 description 3
- 230000008023 solidification Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000529895 Stercorarius Species 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了分布式链路标签的处理方法,装置及应用,涉及分布式链路技术领域。所述方法包括:通过动态字段生成器创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;通过定制化插件处理前述方法参数及标签配置,以及生成方法调用链路;通过定制化插件与标签生成器的集成调用进行标签处理,将处理后的标签配置到前述链路中。本发明为不同业务场景应用服务接入观察平台提供了统一的方法参数类型,从而实现了标准化接入流程,降低接入门槛,减少接入成本,减小接入风险。
Description
技术领域
本发明涉及分布式链路技术领域,尤其涉及一种分布式链路标签的处理方法,装置及应用。
背景技术
随着互联网的快速发展,系统的架构也越来越复杂,为应对高并发大数据量需求的系统出现,微服务架构应运而生,利用微服务架构,一个完整系统的功能模块被拆分为多个小而专的微服务。微服务架构提高了现代互联网应用应对高并发量以及快速需求变化的能力,但也提高了程序物理上的分布性,系统在内部业务流程调用中经历的节点链也越来越多,而节点之间的拓扑结构较为复杂,当某个节点出问题时,排查整个调用链条中的故障节点定位非常困难。据此,出现了分布式链路追踪技术(Tracing)。分布式链路追踪技术可以记录一个请求是如何在整个系统不同模块间进行流转、整个调用链路上的各个模块间的调用关系如何、每个微服务处理的时间长短、处理的结果是否正确等,上述记录的信息对整个系统的运维、性能分析和故障追踪都有帮助。
目前常用的分布式链路追踪工具(或称跨度链路生成工具),比如有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可以是字符串、布尔或者数字类型,通常是字符串格式。
分布式链路可观测平台在观测业务场景应用服务的链路数据时,需要根据不同业务场景应用服务的不同方法参数类型的业务属性生成标签(业务标签)Tag并在链路跨度Span中注入前述标签Tag,即将生成的标签Tag添加到对应的本地跨度local Span对象中。目前,标签的生成和注入普遍采用的方法是通过定制化插件将固化配置的方法参数类型及属性名称直接设定为要注入链路跨度的标签。参见图1所示,定制化插件通常包括内置的定制化配置模块、链路生成模块和标签生成模块,来自于业务场景应用服务的固化配置的类和方法信息导入到定制化配置模块中,经过定制化配置模块生成预设方法参数类型的配置数据——称为方法参数及标签配置,参见图2所示,然后将方法参数及标签配置导入链路生成模块,通过链路生成模块和标签生成模块的内置调用实现方法调用链路Trace和标签Tag的生成,以及标签Tag注入(将方法加入追踪链路时,在方法上增加标签)。在定制化插件中,链路及标签生成的时序图参见图3所示:从定制化配置模块中获取配置集合Map;创建链路跨度Span;从前述配置集合Map中获取标签配置集合Map1,根据标签配置集合Map1中的标签配置生成标签对象并存入标签集合Map2,将标签集合Map2对象设置进链路跨度Span对象中(即注入标签)。
上述方案存在如下缺点:一方面,上述标签生成和注入方案是一种固化预置注入方法——在定制化配置模块中,需要拦截的类、方法参数及标签必须是预设的方法参数类型(比如图1中示例的第一类方法参数类型MethodArgTypeOne,其对应业务语义的固化属性)和固化配置(比如图1中示例的与第一类方法参数类型MethodArgTypeOne对应的第一类方法参数及标签配置MethodArgTagConfigOne,需要预置固化属性)才可以成功生产标签,无法根据业务动态进行标签的生成和注入。也就是说,当需要拦截的方法参数类型对应的是业务语义的动态属性时,无法基于前述固化配置预置的参数属性名和属性值生成业务标签,进而也无法注入标签。
另一方面,针对不同的业务场景应用服务,对应不同的固化配置的预设方法参数类型,不同固化配置的方法参数类型接入定制化配置模块时需要采用不同的解析方式,增加了解析的复杂度,随着业务发展和服务方法参数的更新,会导致增加接入流程复杂度,降低接入效率。
再一方面,因为定制化配置中的标签需要根据不同业务场景中不同方法参数类型的业务属性进行逐个设置,由于业务场景各异、业务属性繁多,导致配置的标签数量大且更新变动频繁,占用了较多的算力和人力成本。同时,随着业务(比如量化交易业务)持续发展,接入的应用服务也在不断迭代更新,需要生产的链路和标签范围和数量也不断扩大,定制化配置模块中需要设置的标签也持续增加(同步更新),增加了定制化配置模块与应用服务之间的维护成本。而且,定制化配置与应用服务需要拦截的类和方法之间的版本同步更新可能存在不一致而导致接入错漏的风险。
发明内容
本发明的目的在于:克服现有技术的不足,提供一种分布式链路标签的处理方法,装置及应用。本发明为不同业务场景应用服务接入观察平台提供了统一的方法参数类型,从而实现了标准化接入流程,降低接入门槛,减少接入成本,减小接入风险。同时,解决了现有拦截组件不支持业务的动态属性的问题。
为实现上述目标,本发明提供了如下技术方案:
一种分布式链路标签的处理方法,包括如下步骤:
通过动态字段生成器为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;
通过定制化插件处理前述方法参数及标签配置,根据JavaAgent机制对需要拦截的类和方法进行拦截,生成方法调用链路;
通过定制化插件与标签生成器的集成调用进行标签处理,将处理后的标签配置到前述链路的链路跨度Span对象中;一个链路由多个所述链路跨度Span对象组成,所述标签由一组键值对构成。
进一步,在所述方法参数及标签配置中,配置对象包括类、方法和标签,其中,方法的参数采用统一结构化定义的动态字段DynamicFields类型,标签的配置信息包括标签名和标签值,所述标签名为前述动态字段DynamicFields,所述标签值通过表达式arg[0].toString()从参数值中获得。
进一步,动态字段生成器设置在分布式链路可观测平台中并与业务场景应用服务通信连接;
所述动态字段生成器被配置为:获取业务场景应用服务中需要拦截的类和方法信息;根据前述需要拦截的类和方法信息得到需要拦截的类、方法参数和标签信息,对需要拦截的类、方法参数和标签进行统一结构化处理,从而为前述业务场景应用服务创建方法参数类型对象;以及,将创建的方法参数类型对象发送至前述业务场景应用服务;
所述业务场景应用服务接收前述方法参数类型对象后,将其导入需要拦截的类和方法信息并使用,得到处理后的类和方法信息。
进一步,所述定制化插件与业务场景应用服务和标签生成器连接,被配置为:从业务场景应用服务中读取前述处理后的类和方法信息,并将其导入到定制化配置模块,通过定制化配置模块生成对应的方法参数及标签配置,并将前述方法参数及标签配置导入链路生成模块以用于生成方法调用链路;
所述链路生成模块被配置为:根据JavaAgent机制对需要拦截的类和方法使用byte-buddy动态修改Java类的二进制对方法进行切面拦截,以生成方法调用链路。
进一步,所述标签生成器连接定制化插件的链路生成模块;
在生成方法调用链路时,所述链路生成模块通过集成调用所述标签生成器来进行标签处理;在标签处理完后,所述标签生成器通过集成前述链路生成模块来将处理后的标签注入前述链路中。
进一步,所述标签生成器处理标签的步骤包括:
从定制化插件中获取标签集合;
对前述标签集合中的元素依次进行模板匹配、标签解析和标签过滤操作,得到过滤后的标签集合;
调用定制化插件中的链路生成模块以将所述过滤后的标签集合配置到链路跨度Span对象中。
进一步,所述标签集合通过定制化插件处理后得到,处理步骤如下:
从定制化配置模块生成的方法参数及标签配置中获取配置集合;
创建链路跨度Span;
从前述配置集合中获取与标签相关的标签配置集合;
根据所述标签配置集合中的标签配置信息生成标签对象,并将标签存入集合,得到前述标签集合。
本发明还提供了一种分布式链路标签的处理装置,包括动态字段生成器、定制化插件和标签生成器,
所述动态字段生成器,用于为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;
所述定制化插件,用于处理前述方法参数及标签配置,根据JavaAgent机制对需要拦截的类和方法进行拦截,生成方法调用链路;
所述标签生成器,用于处理标签;
其中,所述定制化插件与标签生成器之间通过集成调用进行标签处理,处理后的标签配置到前述链路的链路跨度Span对象中;一个链路由多个所述链路跨度Span对象组成,所述标签由一组键值对构成。
本发明还提供了一种分布式链路追踪系统,包括分布式链路可观测平台,所述分布式链路可观测平台包括动态字段生成器、定制化插件和标签生成器;
所述动态字段生成器,用于为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;
所述定制化插件,用于处理前述方法参数及标签配置,根据机制对需要拦截的类和方法进行拦截,生成方法调用链路;
所述标签生成器,用于处理标签;
其中,所述定制化插件与标签生成器之间通过集成调用进行标签处理,处理后的标签配置到前述链路的链路跨度Span对象中;一个链路由多个所述链路跨度Span对象组成,所述标签由一组键值对构成。
本发明还提供了一种分布式系统,包括前述的分布式链路追踪系统。
本发明由于采用以上技术方案,与现有技术相比,具有以下的优点和积极效果:为不同业务场景应用服务接入观察平台提供了统一的方法参数类型,从而实现了标准化接入流程,降低接入门槛,减少接入成本,减小接入风险。同时,解决了现有拦截组件不支持业务的动态属性的问题。
附图说明
图1为现有技术提供的链路和标签的生成流程图。
图2为现有技术提供的方法参数及标签配置的内容说明图。
图3为现有技术提供的在定制化插件中的链路及标签生成时序图。
图4为本发明实施例提供的链路和标签的生成流程图。
图5为本发明实施例提供的链路及标签生成时序图。
具体实施方式
以下结合附图和具体实施例对本发明公开的分布式链路标签的处理方法,装置及应用作进一步详细说明。需要说明的是,对于相关领域普通技术人员已知的技术(包括方法和装置)可能不作详细讨论,但在适当情况下,上述已知的技术被视为说明书的一部分。同时,示例性实施例的其它示例可以具有不同的值。本说明书附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件。
在本申请实施例的描述中,“/”表示或的意思,“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,比如,“甲和/或乙”表示:单独存在甲乙,单独存在乙,同时存在甲和乙这三种情况。在本申请实施例的描述中,“多个”是指两个及以上。
术语解释:
1. CDTOP:全称Comstar Distributed Tracing Observable Platform,是基于分布式链路追踪工具SkyWalking为量化交易等业务场景的应用服务提供的分布式链路可观测平台。
2.MethodArgTypeOne:即第一类方法参数类型,对应业务语义的固化属性。作为举例,对应的代码可以如下:
public class CquantSendOrderVO implements Serializable {
private String branchNo;
private String customerNo;
Private String orderNo;
...
public String getBranchNo(){
return branchNo;
}
public String getCustomerNo(){
return customerNo;
}
public String getOrderNo(){
return orderNo;
}
...
@Override
public String toString(){
return “CquantSendOrderVO{branchNo=”+branchNo+”,customerNo=”+customerNo+”,orderNo=”+orderNo+”...}”;
}
}
3.MethodArgTagConfigOne:即第一类方法参数及标签配置,对应固化配置。作为举例,对应的代码可以如下:
<?xml version="1.0" encoding="UTF-8"?>
<enhanced>
<CLASS CLASS_NAME="com.comstar.cnp.cquant.trade.service.baseImpl.CquantOrderServiceImpl">
<METHOD METHOD="sendOrder(com.comstar.cnp.cquant.trade.service.contract.CquantSendOrderVO)" ......>
......
<TAG NAME="branchNo">arg[0].branchNo</TAG>
<TAG NAME="customerNo">arg[0].customerNo</TAG>
<TAG NAME="orderNo">arg[0].orderNo</TAG>
......
</METHOD>
......
</CLASS>
......
</enhanced>
其中,CLASS_NAME为用户指定的需要拦截的类名。METHOD为用户指定的需要拦截的方法名,执行方法过程构成一个Span,方法名需要给出完整的参数类型,如果是List<E>,则为java.util.List。标签的值从参数值中获取,如果参数属于一般参数类型时——例如String等,可以直接用表达式arg[x]获得参数值;如果参数属于复杂参数是,则一般用表达式arg[x].toString()或者其它可用的类方法,获得全部参数值或者指定参数;如果参数属于List<E>类型,则可以通过表达式arg[x].[y].toString()或者其它可用的类方法来获得某个元素的全部参数值或者指定参数。
4.MethodArgTypeTwo:即第二类方法参数类型,对应业务语义的动态属性,为本发明提出的统一结构化定义的方法参数类型。作为举例,对应的代码可以如下:
public class DynamicFields implements Serializable {
private final Map<String, Object> fields;
private final Map<String, List<DynamicFields>> groups;
...
public DynamicFields(){
fields = new HashMap<String, Object>();
groups = new HashMap<String, List<DynamicFields>>();
...
}
...
public Map<String, Object> getFields(){
return fields;
}
public Map<String, List<DynamicFields>> getGroups(){
return groups
}
...
@Override
public String toString(){
return “DynamicFields{fields=”+fields+”,groups=”+groups+”...}”;
}
}
5.MethodArgTagConfigTwo:即第二类方法参数及标签配置,对应动态配置。作为举例,对应的代码可以如下:
<?xml version="1.0" encoding="UTF-8"?>
<enhanced>
<CLASS CLASS_NAME="com.comstar.cnp.cquant.trade.service.baseImpl.CquantOrderServiceImpl">
<METHOD METHOD="sendOrder(com.comstar.cci.cdtop.model.DynamicFields)"......>
......
<TAG NAME="DynamicFields">arg[0].toString()</TAG>
......
</METHOD>
......
</CLASS>
......
</enhanced>
其中,CLASS_NAME 为需要拦截的类名。METHOD为需要拦截的方法名,方法参数采用统一结构化定义的动态字段DynamicFields类型。标签的标签名采用动态字段DynamicFields,作为优选,标准值则可以通过表达式arg[0].toString()获取。
以下,根据示例性应用场景对本发明的技术构思和方案进行介绍。
实施例
在现有的布式链路可观测平台中,标签的生成和注入普遍采用的方法是通过定制化插件将固化配置的方法参数类型及属性名称直接设定为要注入链路跨度的标签,对应的是第一类方法参数类型MethodArgTypeOne,其对应的方法参数及标签配置为第一类方法参数及标签配置MethodArgTagConfigOne,不支持动态属性。据此本发明提出了将多种业务场景下的方法参数类型进行统一结构化定义,为了与前述第一类方法参数类型相区分,将其称为第二类方法参数类型MethodArgTypeTwo,与第一类方法参数类型MethodArgTypeOne的区别在于,第二类方法参数类型MethodArgTypeTwo对应的是业务语义的动态属性而非固化属性。对应第二类方法参数类型MethodArgTypeTwo,在定制化插件中设置有第二类方法参数及标签配置MethodArgTagConfigTwo的定制化配置模板,用于生成第二类方法参数及标签配置MethodArgTagConfigTwo的配置数据。
具体实施时,本发明在分布式链路可观测平台中设置了三个组件,包括动态字段生成器DynamicFieldsProducer组件、定制化插件组件和标签生成器TagProducer组件。所述动态字段生成器DynamicFieldsProducer作为分布式链路可观测平台中的组件,主要负责为不同业务场景中应用服务方法生成对应的第二类方法参数类型MethodArgTypeTwo对象。所述定制化插件作为分布式链路可观测平台中的组件,主要用于生成第二类方法参数及标签配置MethodArgTagConfigTwo,并根据配置生成方法调用链路。所述标签生成器TagProducer作为分布式链路可观测平台中的组件,主要负责分布式链路中标签的生成处理。
具体的,本发明提供的一种分布式链路标签的处理方法,包括如下步骤:
S100,通过动态字段生成器DynamicFieldsProducer为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的第二类方法参数类型MethodArgTypeTwo,所述第二类方法参数类型MethodArgTypeTwo对应业务语义的动态属性。对应所述第二类方法参数类型MethodArgTypeTwo设置有第二类方法参数及标签配置MethodArgTagConfigTwo,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段。
S200,通过定制化插件处理前述第二类方法参数及标签配置MethodArgTagConfigTwo,根据JavaAgent机制对需要拦截的类和方法进行拦截,生成方法调用链路;以及,通过定制化插件与标签生成器TagProducer的集成调用进行标签处理,将处理后的标签配置到前述链路的链路跨度Span对象中。
一个链路由多个所述链路跨度Span对象组成。所述标签由一组键值对构成。
本实施例中,在所述第二类方法参数及标签配置MethodArgTagConfigTwo中,配置对象与第一类方法参数及标签配置相同,都包括类、方法和标签;但针对配置对象设置的配置信息则与第一类方法参数及标签配置不同,在第二类方法参数及标签配置中,方法的参数采用统一结构化定义的动态字段DynamicFields类型,标签的配置信息包括标签名和标签值,所述标签名为前述动态字段DynamicFields,所述标签值则可以通过表达式arg[0].toString()从参数值中获得。
本实施例中,动态字段生成器DynamicFieldsProducer与业务场景应用服务通信连接。
所述动态字段生成器DynamicFieldsProducer被配置为:获取业务场景应用服务中需要拦截的类和方法信息;根据前述需要拦截的类和方法信息得到需要拦截的类、方法参数和标签信息,对需要拦截的类、方法参数和标签进行统一结构化处理,从而为前述业务场景应用服务创建第二类方法参数类型MethodArgTypeTwo对象;以及,将创建的第二类方法参数类型MethodArgTypeTwo对象发送至前述业务场景应用服务。
所述业务场景应用服务接收前述第二类方法参数类型MethodArgTypeTwo对象后,将其导入需要拦截的类和方法信息并使用,得到处理后的类和方法信息。
定制化插件与业务场景应用服务和标签生成器TagProducer连接。所述定制化插件被配置为:从业务场景应用服务中读取前述处理后的类和方法信息,并将其导入到定制化配置模块,通过定制化配置模块生成对应的第二类方法参数及标签配置MethodArgTagConfigTwo,并将前述第二类方法参数及标签配置MethodArgTagConfigTwo导入链路生成模块以用于生成方法调用链路。
所述链路生成模块被配置为:根据JavaAgent机制对需要拦截的类和方法使用byte-buddy动态修改Java类的二进制对方法进行切面拦截,以生成方法调用链路。
本实施例中,所述标签生成器连接定制化插件的链路生成模块。在生成方法调用链路时,所述链路生成模块通过集成调用所述标签生成器来进行标签处理。在标签处理完后,所述标签生成器通过集成前述链路生成模块来将处理后的标签注入前述链路中。
具体的,所述标签生成器处理标签的步骤包括:从定制化插件中获取标签集合;对前述标签集合中的元素依次进行模板匹配、标签解析和标签过滤操作,得到过滤后的标签集合;调用定制化插件中的链路生成模块以将所述过滤后的标签集合配置到链路跨度Span对象中。
下面以分布式链路可观测平台为交易管理系统ComStar系统中的CDTOP平台为例,结合图4-5详细描述利用上述技术方案生成链路及标签的过程,图4中,假设业务场景应用服务需要拦截的类和方法为3个,包括类和方法A、类和方法B、类和方法C。
参见图4所示,链路及标签的生成流程被划分为7个步骤,如下。
步骤1,集成调用:业务场景应用服务中需要接入CDTOP的类和方法A、B、C集成调用动态字段生成器DynamicFieldsProducer。
步骤2,对象创建:动态字段生成器DynamicFieldsProducer为三个需要拦截的类和方法A、B、C,创建一个统一结构化的第二类方法参数类型MethodArgTypeTwo对象。即,将需要拦截的三个方法参数类型进行统一结构化,从而提供统一的方法参数类型以便于标准化接入流程。
步骤3. 导入使用:将第二类方法参数类型MethodArgTypeTwo对象导入类和方法A、B、C并使用,重新定义类和方法A、B、C。
步骤4. 信息导入:将类和方法A、B、C定义信息导入定制化插件的定制化配置模块以生成第二类方法参数及标签配置MethodArgTagConfigTwo。
步骤5. 配置导入:将前述生成的第二类方法参数及标签配置MethodArgTagConfigTwo导入链路生成模块。
步骤6. 第一次集成调用:定制化插件的链路生产模块集成调用标签生成器TagProducer标签生成模块,以进行标签的处理。
步骤7. 第二次集成调用:标签生成器TagProducer的标签生成模块调用定制化插件的链路生成模块,以将处理后的标签设置进链路。
参见图5所示,示例了通过定制化插件组件与标签生成器TagProducer生成链路和标签的时序图。
生成链路和标签的步骤具体如下:从定制化配置模块中获取配置集合Map;创建链路跨度Span;从前述配置集合Map中获取标签配置集合Map1;根据标签配置集合Map1中的标签配置信息生成标签对象并存入标签集合Map2;TagProducer获取标签集合Map2中的元素,依次进入模板匹配、解析标签、过滤标签操作,得到过滤后的标签集合;将过滤后的标签集合Map3中的对象设置进对应的链路跨度Span对象中。
本发明的另一实施例,还提供了一种分布式链路标签的处理装置。
所述分布式链路标签的处理装置包括动态字段生成器、定制化插件和标签生成器。
所述动态字段生成器,用于为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型MethodArgTypeTwo,所述方法参数类型MethodArgTypeTwo对应业务语义的动态属性;对应所述方法参数类型MethodArgTypeTwo设置有方法参数及标签配置MethodArgTagConfigTwo,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段。
所述定制化插件,用于处理前述方法参数及标签配置MethodArgTagConfigTwo,根据JavaAgent机制对需要拦截的类和方法进行拦截,生成方法调用链路。
所述标签生成器,用于处理标签。
其中,所述定制化插件与标签生成器之间通过集成调用进行标签处理,处理后的标签配置到前述链路的链路跨度Span对象中;一个链路由多个所述链路跨度Span对象组成,所述标签由一组键值对构成。
其它技术特征参见在前实施例的描述,在此不再赘述。
本发明的另一实施例,还提供了一种分布式链路追踪系统,包括分布式链路可观测平台,所述分布式链路可观测平台包括动态字段生成器、定制化插件和标签生成器。
所述动态字段生成器,用于为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型MethodArgTypeTwo,所述方法参数类型MethodArgTypeTwo对应业务语义的动态属性;对应所述方法参数类型MethodArgTypeTwo设置有方法参数及标签配置MethodArgTagConfigTwo,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段。
所述定制化插件,用于处理前述方法参数及标签配置MethodArgTagConfigTwo,根据JavaAgent机制对需要拦截的类和方法进行拦截,生成方法调用链路。
所述标签生成器,用于处理标签。
其中,所述定制化插件与标签生成器之间通过集成调用进行标签处理,处理后的标签配置到前述链路的链路跨度Span对象中;一个链路由多个所述链路跨度Span对象组成,所述标签由一组键值对构成。
其它技术特征参见在前实施例的描述,在此不再赘述。
本发明的另一实施例,还提供了一种分布式系统,包括前述的分布式链路追踪系统。
其它技术特征参见在前实施例的描述,在此不再赘述。
本发明还提供了一种计算机可读存储介质,用于存储能够被处理单元执行的计算机程序,所述计算机程序被所述处理单元执行时实现如前所述的方法。
所述存储介质,可以包括U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
其它技术特征参见在前实施例的描述,在此不再赘述。
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其它方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (10)
1.一种分布式链路标签的处理方法,其特征在于包括步骤:
通过动态字段生成器为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;
通过定制化插件处理前述方法参数及标签配置,根据JavaAgent机制对需要拦截的类和方法进行拦截,生成方法调用链路;
通过定制化插件与标签生成器的集成调用进行标签处理,将处理后的标签配置到前述链路的链路跨度Span对象中;一个链路由多个所述链路跨度Span对象组成,所述标签由一组键值对构成。
2.权利要求1所述的方法,其特征在于:在述方法参数及标签配置中,配置对象包括类、方法和标签,其中,方法的参数采用统一结构化定义的动态字段DynamicFields类型,标签的配置信息包括标签名和标签值,所述标签名为前述动态字段DynamicFields,所述标签值通过表达式arg[0].toString()从参数值中获得。
3.根据权利要求1所述的方法,其特征在于:动态字段生成器设置在分布式链路可观测平台中并与业务场景应用服务通信连接;
所述动态字段生成器被配置为:获取业务场景应用服务中需要拦截的类和方法信息;根据前述需要拦截的类和方法信息得到需要拦截的类、方法参数和标签信息,对需要拦截的类、方法参数和标签进行统一结构化处理,从而为前述业务场景应用服务创建方法参数类型对象;以及,将创建的方法参数类型对象发送至前述业务场景应用服务;
所述业务场景应用服务接收前述方法参数类型对象后,将其导入需要拦截的类和方法信息并使用,得到处理后的类和方法信息。
4.根据权利要求1所述的方法,其特征在于:所述定制化插件与业务场景应用服务和标签生成器连接,被配置为:从业务场景应用服务中读取前述处理后的类和方法信息,并将其导入到定制化配置模块,通过定制化配置模块生成对应的方法参数及标签配置,并将前述方法参数及标签配置导入链路生成模块以用于生成方法调用链路;
所述链路生成模块被配置为:根据JavaAgent机制对需要拦截的类和方法使用byte-buddy动态修改Java类的二进制对方法进行切面拦截,以生成方法调用链路。
5.根据权利要求4所述的方法,其特征在于:所述标签生成器连接定制化插件的链路生成模块;
在生成方法调用链路时,所述链路生成模块通过集成调用所述标签生成器来进行标签处理;在标签处理完后,所述标签生成器通过集成前述链路生成模块来将处理后的标签注入前述链路中。
6.根据权利要求5所述的方法,其特征在于:所述标签生成器处理标签的步骤包括:
从定制化插件中获取标签集合;
对前述标签集合中的元素依次进行模板匹配、标签解析和标签过滤操作,得到过滤后的标签集合;
调用定制化插件中的链路生成模块以将所述过滤后的标签集合配置到链路跨度Span对象中。
7.根据权利要求6所述的方法,其特征在于:所述标签集合通过定制化插件处理后得到,处理步骤如下:
从定制化配置模块生成的方法参数及标签配置中获取配置集合;
创建链路跨度Span;
从前述配置集合中获取与标签相关的标签配置集合;
根据所述标签配置集合中的标签配置信息生成标签对象,并将标签存入集合,得到前述标签集合。
8.一种分布式链路标签的处理装置,其特征在于:包括动态字段生成器、定制化插件和标签生成器,
所述动态字段生成器,用于为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;
所述定制化插件,用于处理前述方法参数及标签配置,根据JavaAgent机制对需要拦截的类和方法进行拦截,生成方法调用链路;
所述标签生成器,用于处理标签;
其中,所述定制化插件与标签生成器之间通过集成调用进行标签处理,处理后的标签配置到前述链路的链路跨度Span对象中;一个链路由多个所述链路跨度Span对象组成,所述标签由一组键值对构成。
9.一种分布式链路追踪系统,包括分布式链路可观测平台,其特征在于:所述分布式链路可观测平台包括动态字段生成器、定制化插件和标签生成器;
所述动态字段生成器,用于为业务场景应用服务接入分布式链路可观测平台创建统一结构化定义的方法参数类型,所述方法参数类型对应业务语义的动态属性;对应所述方法参数类型设置有方法参数及标签配置,该方法参数及标签配置中的配置信息采用统一结构化定义的动态字段;
所述定制化插件,用于处理前述方法参数及标签配置,根据JavaAgent机制对需要拦截的类和方法进行拦截,生成方法调用链路;
所述标签生成器,用于处理标签;
其中,所述定制化插件与标签生成器之间通过集成调用进行标签处理,处理后的标签配置到前述链路的链路跨度Span对象中;一个链路由多个所述链路跨度Span对象组成,所述标签由一组键值对构成。
10.一种分布式系统,其特征在于:包括权利要求9所述的分布式链路追踪系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310946375.6A CN116962407B (zh) | 2023-07-31 | 2023-07-31 | 分布式链路标签的处理方法和装置、分布式链路追踪系统及分布式系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310946375.6A CN116962407B (zh) | 2023-07-31 | 2023-07-31 | 分布式链路标签的处理方法和装置、分布式链路追踪系统及分布式系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116962407A true CN116962407A (zh) | 2023-10-27 |
CN116962407B CN116962407B (zh) | 2024-02-13 |
Family
ID=88454453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310946375.6A Active CN116962407B (zh) | 2023-07-31 | 2023-07-31 | 分布式链路标签的处理方法和装置、分布式链路追踪系统及分布式系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116962407B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457190A (zh) * | 2019-07-09 | 2019-11-15 | 优估(上海)信息科技有限公司 | 一种基于区块链的全链路监控方法、装置及系统 |
CN111385122A (zh) * | 2018-12-29 | 2020-07-07 | 广州市百果园信息技术有限公司 | 分布式系统链路跟踪方法、装置、计算机设备及存储介质 |
WO2021189899A1 (zh) * | 2020-09-24 | 2021-09-30 | 平安科技(深圳)有限公司 | 链路状态的追踪方法、装置、电子设备及计算机存储介质 |
CN113987074A (zh) * | 2021-10-27 | 2022-01-28 | 中国工商银行股份有限公司 | 分布式服务全链路监控方法、装置、电子设备及存储介质 |
-
2023
- 2023-07-31 CN CN202310946375.6A patent/CN116962407B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111385122A (zh) * | 2018-12-29 | 2020-07-07 | 广州市百果园信息技术有限公司 | 分布式系统链路跟踪方法、装置、计算机设备及存储介质 |
CN110457190A (zh) * | 2019-07-09 | 2019-11-15 | 优估(上海)信息科技有限公司 | 一种基于区块链的全链路监控方法、装置及系统 |
WO2021189899A1 (zh) * | 2020-09-24 | 2021-09-30 | 平安科技(深圳)有限公司 | 链路状态的追踪方法、装置、电子设备及计算机存储介质 |
CN113987074A (zh) * | 2021-10-27 | 2022-01-28 | 中国工商银行股份有限公司 | 分布式服务全链路监控方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116962407B (zh) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108280023B (zh) | 任务执行方法、装置和服务器 | |
CN103309904A (zh) | 一种生成数据仓库etl 代码的方法及装置 | |
CN114547208B (zh) | 用于全链路追踪事务的方法及原生分布式数据库 | |
CN114327678A (zh) | 一种支持多引擎的实时数据处理系统及方法 | |
WO2006136055A1 (fr) | Procédé d'exploration de données texte | |
CN108763323B (zh) | 基于资源集和大数据技术的气象格点文件应用方法 | |
CN116089126A (zh) | 一种数据实时采集方法、装置、设备及可读存储介质 | |
CN111240772B (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN108345658A (zh) | 算法计算轨迹的分解处理方法、服务器及存储介质 | |
CN115104336A (zh) | 跟踪和公开用于生成分析的数据 | |
CN112395339B (zh) | 系统间数据准入校验方法、装置、计算机设备和存储介质 | |
CN108243238B (zh) | 一种性能数据的采集方法及装置 | |
CN116962407B (zh) | 分布式链路标签的处理方法和装置、分布式链路追踪系统及分布式系统 | |
CN102486731B (zh) | 增强软件的软件调用栈的可视化的方法、设备和系统 | |
CN111552839A (zh) | 一种基于xml模板的对象转换方法 | |
CN112130849B (zh) | 代码自动生成方法及装置 | |
CN113179294B (zh) | 一种基于智能合约的schema统一存取方法 | |
CN114116900A (zh) | 一种基于mdd模型的高效交易系统及开发方法 | |
CN114356454A (zh) | 对账数据处理方法、设备、存储介质及程序产品 | |
CN108647018A (zh) | 可实时预览的代码生成系统 | |
CN112799638B (zh) | 无侵入式快速开发方法、平台、终端及存储介质 | |
CN112035482B (zh) | 业务表分区方法及装置 | |
CN117667717A (zh) | 自动化测试方法、装置、系统、设备及存储介质 | |
CN117743289A (zh) | Mbse模型库的构建方法及装置 | |
CN118035204A (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 |