Dapper, a Large-Scale Distributed Systems Tracing Infrastructure论文阅读笔记

这篇论文谷歌公司2010年发表的,这是业内实现链路跟踪的理论基础,有很大的参考价值,作为一个技术人员,不应该仅仅满足于会用别人开发的链路追踪组件,应该读一下重要的论文,提升对工程技术的理解能力,理解工程设计背后的理论。
原文可以再网上搜,免费下载,读一下顺便可以锻炼英文阅读能力。

这篇论文主要经dapper是如何设计的,dapper是一个在Google生产环境下应用的分布式系统追踪服务。需要追踪的场景对dapper有两个基本的要求

  • 大范围部署 (uniquitous deployment):因为需要追踪整个系统的调用情况,所以要覆盖面很广才能达到更好的跟踪效果
  • 持续监控 (continuous monitoring):很多系统的 异常行为难以重现,所以如果不能持续监控,有可能会漏掉了一些异常行为

针对这两个基本要求,提出了三个具体的设计目标:

  • 低消耗 (Low overhead):跟踪系统对在线服务的性能影响应该做到可忽略不计。对于一些高度优化过的服务,监控系统的性能消耗可能会很明显,对服务正常运行造成影响
  • 应用级透明 (Application-level transparency):程序员应该不需要感知到跟踪系统。不需要开发人员刻意配合
  • 可扩展性 (Scalability):能处理未来增长的更大的规模

分布式跟踪系统需要跟踪每一台机器上信息发送和接收的信息标识符合时间戳。
Dapper跟踪模型使用了数,span和标注。

跟踪树和span

在Dapper跟踪树中,一个树节点就是一个span,节点之间的连线表示span和span之间的关系,一个span是一个时间戳日志,里面包含有这个span的开始时间,结束时间,rpc时间上数据。dapper给每一个span都记录一个span name ,span id , parent id,这样就可以记录一个跟踪过程中不同span之间的关系。如果一个span没有parent id,说明他是根节点span。在一个请求过程中,产生的所有span共享同一个trace id。

标注annotation

Dapper允许开发者定义带时间戳的标注,这样可以丰富跟踪数据,方便调试。除了支持简单的文本标注,还支持key-value map 的标注。

采样sampling

为了降低测量的损耗,只记录一部分跟踪信息,通过采样来获取。

跟踪收集

dapper的跟踪和收集分为三个阶段

  1. 第一阶段:把span数据写入到本地日志文件中
  2. 第二阶段:dapper的守护进程从主机当中把这些数据拉取出来
  3. 第三阶段:把这些数据写入到BigTable的仓库中

BigTable中的每一个行表示一个跟踪过程,每一列是一个span,表示一次rpc调用的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值