CN106357463B - 非入侵式的访问链路跟踪实现方法及其系统 - Google Patents
非入侵式的访问链路跟踪实现方法及其系统 Download PDFInfo
- Publication number
- CN106357463B CN106357463B CN201610976271.XA CN201610976271A CN106357463B CN 106357463 B CN106357463 B CN 106357463B CN 201610976271 A CN201610976271 A CN 201610976271A CN 106357463 B CN106357463 B CN 106357463B
- Authority
- CN
- China
- Prior art keywords
- tracking
- business interface
- tracking data
- communication packet
- caching
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- 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
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种非入侵式的访问链路跟踪实现方法,任意一业务接口生成包含跟踪ID的跟踪数据,将跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量;当任意一业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口,另一接口解出通讯报文,检查是否携带有跟踪ID,如果携带有跟踪ID,生成的跟踪数据中增加节点,形成父子关系,将跟踪数据写入缓存中同时把跟踪ID存储到全局变量;周期性地将每个业务接口对应的缓存中的跟踪数据取出,根据节点和跟踪ID确定每一个调用链的层级依赖关系并且进行显示;还公开了一种系统。本发明能够实现上下级调用关系、请求次数、执行时间,以及调用关系拓扑图。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种非入侵式的访问链路跟踪实现方法及其系统。
背景技术
随着公司业务的发展壮大,各个业务系统衍生的接口越来越多,各接口之间相互调用关系越来越复杂,例如:一个A请求,需要调用B接口和C接口,其中B接口中又调了D接口,C接口调用了E接口。系统分析人员想知道系统的瓶颈、性能以及各接口使用率,已经无法全盘掌控,一旦某些接口出现瓶颈,将直接影响整个系统的性能。
发明内容
有鉴于此,本发明的主要目的在于提供一种非入侵式的访问链路跟踪实现方法及其系统。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供一种非入侵式的访问链路跟踪实现方法,该方法为:任意一业务接口生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;当任意一业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口,所述另一接口解出通讯报文,检查是否携带有跟踪ID,如果携带有跟踪ID,生成的跟踪数据中增加节点parent_id,形成父子关系,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;周期性地将每个业务接口对应的缓存中的跟踪数据根据先进先出方式取出,根据所述跟踪数据中的节点和跟踪ID确定每一个调用链的层级依赖关系;所述跟踪数据还包括调用发起时间、发起IP、发起服务的服务名称、Span名称、调用结束时间;所述通讯报文的通讯方式为http或者socket。
上述方案中,该方法还包括:当该业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口,所述另一接口解出通讯报文,检查是否携带有跟踪ID,如果没有携带跟踪ID,则所述另一个业务接口生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中。
本发明实施例还提供一种非入侵式的访问链路跟踪实现系统,该系统包括:跟踪数据生成单元、调用单元、解析单元、读取显示单元;
所述跟踪数据生成单元,用于针对任意一业务接口生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;还用于如果所述通讯报文携带有跟踪ID,生成的跟踪数据中增加节点parent_id,形成父子关系,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;所述通讯报文的通讯方式为http或者socket;
所述调用单元,用于当任意一业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口;
所述解析单元,用于解析所述通讯报文,检查是否携带有跟踪ID;
所述读取显示单元,用于周期性地将每个业务接口对应的缓存中的跟踪数据根据先进先出方式取出,根据所述跟踪数据中的节点和跟踪ID确定每一个调用链的层级依赖关系;所述跟踪数据还包括调用发起时间、发起IP、发起服务的服务名称、Span名称、调用结束时间;
所述跟踪数据生成单元,如果所述通讯报文没有携带跟踪ID,则不参与访问链路跟踪关系。
上述方案中,所述跟踪数据生成单元,如果所述通讯报文没有携带父级跟踪ID,则生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中。
与现有技术相比,本发明的有益效果:
本发明数据读写快,同时利用报文格式自定义的方便,使调用链路追踪变得简单易用,能够实现上下级调用关系、请求次数、执行时间,通过汇总统计能够清晰地实现调用关系拓扑图。
附图说明
图1为本发明实施例提供一种非入侵式的访问链路跟踪实现方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供一种非入侵式的访问链路跟踪实现方法,如图1所示,该方法通过以下步骤实现:
步骤101:任意一业务接口生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;
具体地,所述跟踪数据还包括调用发起时间、发起IP、发起服务的服务名称、Span名称、调用结束时间。
例如,业务接口A生成跟踪数据(包含跟踪ID),将数据写入系统缓存中,同时把跟踪ID放到全局变量中。
步骤102:当任意一业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口,所述另一接口解出通讯报文,检查是否携带有跟踪ID,如果携带有跟踪ID,生成的跟踪数据中增加节点parent_id,形成父子关系,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;
如果所述通讯报文没有携带父级跟踪ID,则所述另一业务接口生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中。
具体地,所述通讯报文的通讯方式为http或者socket。
例如,业务接口A调用接口B时,把跟踪ID带到通讯报文中,业务接口B收到请求后,解出通讯报文,检查是否带有跟踪ID,如果带有跟踪ID,生成的跟踪数据中增加节点parent_id,形成父子关系,将数据写入当前操作系统缓存中,同时把跟踪ID放到全局变量中;业务接口C处理方式与业务接口B相同。
步骤103:周期性地将每个业务接口对应的缓存中的跟踪数据根据先进先出方式取出,根据所述跟踪数据中的节点和跟踪ID确定每一个调用链的层级依赖关系并且进行显示。
具体地,将每个系统中的缓存数据按先进先出的方式取出来,统一写入kafka分布式消息系统中,用zipkin将kafka分布式消息系统中的数据取出来,写入到Elasticsearch中分布式存储,用zipkin-ui程序把Elasticsearch中的数据读取出来,并做调用链上下级依赖关系显示。
实施例:
本发明实施例提供一种非入侵式的访问链路跟踪实现方法,该方法通过以下步骤实现:
1.接口调用方发起调用时,生成TraceID和Span跟踪数据,所述Span跟踪数据包括:调用发起时间、发起IP、发起服务的服务名称、Span名称、调用结束时间。
2.把Span跟踪数据写入到系统缓存中,由程序直接操作系统的System V IPC。
3.调用接口时,把TraceID与其它数据一起组装到通讯报文中传输,通讯方式支持http,socket,报文内容格式可自行定义,如:Json\Protobuf\Thrift。
4.接口接收方收到TraceID后,再生成新的Span,同时在Span上增加parentId节点并赋上TraceID的值,与上一个Span建立关联关系。
5.上一接口再调另一接口,处理方式将与前面步骤相同。
6.每台服务器不间断的执行缓存数据(System V)的读取操作,并统一写入到kafka分布式消息服务中。
7.zipkin程序实时的从kafka分布式消息服务把数据读取出来,进行整理,整理完数据写入到Elasticsearch存储,采用Elasticsearch存储的优势是它具有搜索引擎机制,数据读取检索快,支持分布式存储。
8.zipkin-ui程序实时的检索Elasticsearch的数据,并在界面上展示出来每一个调用链的层级依赖关系,执行时长。
本发明实施例还提供一种非入侵式的访问链路跟踪实现系统,该系统包括:跟踪数据生成单元、调用单元、解析单元、读取显示单元;
所述跟踪数据生成单元,用于针对任意一业务接口生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;还用于如果所述通讯报文携带有跟踪ID,生成的跟踪数据中增加节点parent_id,形成父子关系,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;
所述调用单元,用于当任意一业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口;
所述解析单元,用于解析所述通讯报文,检查是否携带有跟踪ID;
所述读取显示单元,用于周期性地将每个业务接口对应的缓存中的跟踪数据根据先进先出方式取出,根据所述跟踪数据中的节点和跟踪ID确定每一个调用链的层级依赖关系并且进行显示。
所述跟踪数据还包括调用发起时间、发起IP、发起服务的服务名称、Span名称、调用结束时间。
所述通讯报文的通讯方式为http或者socket。
所述跟踪数据生成单元,如果所述通讯报文没有携带跟踪ID,则不参与访问链路跟踪关系。
所述跟踪数据生成单元,如果所述通讯报文没有携带父级跟踪ID,则生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (4)
1.一种非入侵式的访问链路跟踪实现方法,其特征在于,该方法为:任意一业务接口生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;当任意一业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口,所述另一接口解出通讯报文,检查是否携带有跟踪ID,如果携带有跟踪ID,生成的跟踪数据中增加节点parent_id,形成父子关系,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;周期性地将每个业务接口对应的缓存中的跟踪数据根据先进先出方式取出,根据所述跟踪数据中的节点和跟踪ID确定每一个调用链的层级依赖关系;所述跟踪数据还包括调用发起时间、发起IP、发起服务的服务名称、Span名称、调用结束时间;所述通讯报文的通讯方式为http或者socket。
2.根据权利要求1所述的非入侵式的访问链路跟踪实现方法,其特征在于,该方法还包括:当该业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口,所述另一接口解出通讯报文,检查是否携带有跟踪ID,如果没有携带跟踪ID,则所述另一个业务接口生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中。
3.一种非入侵式的访问链路跟踪实现系统,其特征在于,该系统包括:跟踪数据生成单元、调用单元、解析单元、读取显示单元;
所述跟踪数据生成单元,用于针对任意一业务接口生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中,当任意一业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口;还用于如果所述通讯报文携带有跟踪ID,生成的跟踪数据中增加节点parent_id,形成父子关系,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中;所述通讯报文的通讯方式为http或者socket;
所述调用单元,用于当任意一业务接口调用另一个业务接口时,将携带所述跟踪ID的通讯报文发送给另一业务接口;
所述解析单元,用于解析所述通讯报文,检查是否携带有跟踪ID;
所述读取显示单元,用于周期性地将每个业务接口对应的缓存中的跟踪数据根据先进先出方式取出,根据所述跟踪数据中的节点和跟踪ID确定每一个调用链的层级依赖关系并且进行显示;所述跟踪数据还包括调用发起时间、发起IP、发起服务的服务名称、Span名称、调用结束时间。
4.根据权利要求3所述的非入侵式的访问链路跟踪实现系统,其特征在于,所述跟踪数据生成单元,还用于如果所述通讯报文没有携带父级跟踪ID,则生成包含跟踪ID的跟踪数据,将所述跟踪数据写入缓存中同时把所述跟踪ID存储到全局变量中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610976271.XA CN106357463B (zh) | 2016-11-07 | 2016-11-07 | 非入侵式的访问链路跟踪实现方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610976271.XA CN106357463B (zh) | 2016-11-07 | 2016-11-07 | 非入侵式的访问链路跟踪实现方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106357463A CN106357463A (zh) | 2017-01-25 |
CN106357463B true CN106357463B (zh) | 2019-10-25 |
Family
ID=57864897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610976271.XA Active CN106357463B (zh) | 2016-11-07 | 2016-11-07 | 非入侵式的访问链路跟踪实现方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106357463B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992465B (zh) * | 2017-12-29 | 2023-05-16 | 中国电信股份有限公司 | 服务追踪方法、装置和计算机可读存储介质 |
CN110213067B (zh) * | 2018-03-06 | 2022-07-08 | 腾讯科技(深圳)有限公司 | 业务请求的跟踪信息处理方法、装置和系统 |
CN110780883A (zh) | 2018-07-30 | 2020-02-11 | 网宿科技股份有限公司 | 方法调用链跟踪方法、电子装置及计算机可读存储介质 |
CN111193631B (zh) * | 2018-11-14 | 2022-02-08 | 中国电信股份有限公司 | 信息处理方法、系统和计算机可读存储介质 |
CN111259275B (zh) * | 2018-12-03 | 2023-12-15 | 阿里巴巴集团控股有限公司 | 一种数据追踪方法、设备及存储介质 |
CN111459766B (zh) * | 2019-11-14 | 2024-01-12 | 国网浙江省电力有限公司信息通信分公司 | 一种面向微服务系统的调用链跟踪与分析方法 |
CN112565194A (zh) * | 2020-11-09 | 2021-03-26 | 广东华兴银行股份有限公司 | 一种交易链路跟踪方法、电子设备及存储介质 |
CN112737869A (zh) * | 2021-04-02 | 2021-04-30 | 北京宇信科技集团股份有限公司 | Esb系统的链路跟踪方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870465A (zh) * | 2012-12-07 | 2014-06-18 | 厦门雅迅网络股份有限公司 | 一种非入侵式的数据库爬虫的实现方法 |
CN105224445A (zh) * | 2015-10-28 | 2016-01-06 | 北京汇商融通信息技术有限公司 | 分布式跟踪系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120265667A1 (en) * | 2011-04-18 | 2012-10-18 | Thomas Sachson | Financial instrument discovery, transparency, communication, and trading facilitation |
US20150154880A1 (en) * | 2013-12-02 | 2015-06-04 | Aetna Inc. | Healthcare management with a support network |
-
2016
- 2016-11-07 CN CN201610976271.XA patent/CN106357463B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870465A (zh) * | 2012-12-07 | 2014-06-18 | 厦门雅迅网络股份有限公司 | 一种非入侵式的数据库爬虫的实现方法 |
CN105224445A (zh) * | 2015-10-28 | 2016-01-06 | 北京汇商融通信息技术有限公司 | 分布式跟踪系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106357463A (zh) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106357463B (zh) | 非入侵式的访问链路跟踪实现方法及其系统 | |
CN106021315B (zh) | 一种应用程序的日志管理方法及系统 | |
CN102523279B (zh) | 一种分布式文件系统及其热点文件存取方法 | |
CN111737127B (zh) | 用于测试地图服务的方法和装置 | |
CN108418862A (zh) | 基于人工智能服务云平台的微服务管理方法和系统 | |
US8489733B2 (en) | Automatic enterprise service bus deployment at the level of individual services | |
CN107491320A (zh) | 基于混合模式移动应用的载入方法和装置 | |
CN106686021B (zh) | 一种服务调用方法和网关 | |
CN102624881A (zh) | 一种面向移动设备的服务缓存系统架构及开发方法 | |
US11675682B2 (en) | Agent profiler to monitor activities and performance of software agents | |
CN111970195B (zh) | 数据传输方法和流式数据传输系统 | |
US8806277B1 (en) | Systems and methods for fetching troubleshooting data | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN105743934B (zh) | 一种http访问可用性的优化方法和移动智能终端 | |
CN105183470A (zh) | 一种自然语言处理系统化服务平台 | |
CN104657366A (zh) | 海量日志写入数据库的方法、装置和日志容灾系统 | |
CN112019605A (zh) | 数据流的数据分发方法和系统 | |
CN109412826B (zh) | Sdon架构模型优化方法、装置、系统及计算机可读存储介质 | |
CN107633102A (zh) | 一种读取元数据的方法、装置、系统及设备 | |
CN112202862B (zh) | 一种基于kafka的集群数据以及文件的同步方法及装置 | |
WO2020238860A1 (zh) | 分布式文件批处理方法、装置、与可读存储介质 | |
Ganchev et al. | Smart recommendation of mobile services to consumers | |
CN102902593A (zh) | 基于缓存机制的协议分发处理系统 | |
Huang et al. | Achieving fast page load for websites across multiple domains | |
CN113992644B (zh) | 一种基于无服务技术的物联网关系统及其数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |