分布式跟踪系统学习 zipkin 原理概述01

概述

Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据

如上图所示,各业务系统在彼此调用时,将特定的跟踪消息传递至zipkin,zipkin在收集到跟踪信息后将其聚合处理、存储、展示等,用户可通过web UI方便获得网络延迟、调用链路、系统依赖等等。

Zipkin主要包括四个模块
- Collector           接收或收集各应用传输的数据
- Storage            存储接受或收集过来的数据,当前支持Memory,MySQL,Cassandra,ElasticSearch等,默认存储在内存中。
- API(Query)   负责查询Storage中存储的数据,提供简单的JSON API获取数据,主要提供给web UI使用
- Web                  提供简单的web界面
 

client会调用server的服务,两者都会向Zipkin上报trace相关信息;在Client和Server通过Transport上报trace信息后,zipkin的Collector模块接收,然后由Storage模块将数据存储在对应的存储介质,然后由Zipkin 提供UI界面和API查询Trace跟踪信息

应用的代码(User Code)发起Http Get请求(请求路径/foo),经过Trace框架(Trace Instrumentation)拦截,并依次经过如下步骤,记录Trace信息到Zipkin中:

1.记录tags信息
2.将当前调用链的Trace信息记录到Http Headers中
3.记录当前调用的时间戳(timestamp)
4.发送http请求,并携带Trace相关的Header,如X-B3-TraceId:aa,X-B3-SpandId:6b
5.调用结束后,记录当次调用所花的时间(duration)
6.将步骤1-5,汇总成一个Span(最小的Trace单元),异步上报该Span信息给Zipkin Collector

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Zipkin的几个基本概念
Span:基本工作单元,一次链路调用(可以是RPC,DB等没有特定的限制)创建一个span,通过一个64位ID标识它, span通过还有其他的数据,例如描述信息,时间戳,key-value对的(Annotation)tag信息,parent-id等,其中parent-id 可以表示span调用链路来源,通俗的理解span就是一次请求信息

Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识,即TraceId

Annotation:注解,用来记录请求特定事件相关信息(例如时间),通常包含四个注解信息
- cs - Client Start,表示客户端发起请求
- sr - Server Receive,表示服务端收到请求
- ss - Server Send,表示服务端完成处理,并将结果发送给客户端
- cr - Client Received,表示客户端获取到服务端返回信息

BinaryAnnotation:提供一些额外信息,一般以key-value对出现

而在使用了Zipkin提供的WebUI界面后,我们很容易搜索出一个调用链路中延迟高的服务

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值