赞
踩
在2010年,google发表了一篇名为“Dapper, a Large-Scale Distributed Systems Tracing Infrastructure”的论文,在文中介绍了google生产环境中大规模分布式系统下的跟踪系统Dapper的设计和使用经验。而zipkin/pinpoint/hydra/watchman/鹰眼等系统都是基于这篇文章而实现的。重新再读这篇文章,简单整理如下。
快速的故障定位非常重要,一个好的系统需要提供快速检测/隔离/修复问题的方式,传统方式缺乏这种机制,而快速定位则是这个机制的重要一环,由于缺乏快速定位机制,当关键业务相关应用服务停止或者性能恶化,对业务有直接影响时,由于缺乏有效和快速的应对措施,往往由最终用户的反馈作为整个定位的开始一环,往往已经是损失很难挽回的时间点了。
由于缺乏快速定位机制,既存那些长期的性能低下问题以及重复出现的问题很难精确定位,产生了大量的技术债务。而随着新的功能的不断添加,同样无法尽早或者预先发现问题导致问题也不断的累积。修改自身也可能会导致更多问题的引入,从而形成了恶性循环。
根据跟踪系统提供的数据可以提供及时和全面的性能报告,并且在此基础之上,能够做进一步的分析从而提供决策支持的所需数据,比如根据收集的信息可以对用户行为/模式分析:从而进一步地进行测量和管控。
现代的应用服务,往往是非常复杂的,如下的情况非常常见:
软件的模块有不同团队开发
整体由多种编程语言实现
牵扯到多种操作系统和硬件
关联不同数据中心的众多服务器
…
在这样的背景下,跟踪系统更加复杂,传统方式的跟踪系统往往是系统整体机能的一部分,往往侵入性过强,往往会产生由监控代码段引入的缺陷出现,同时由于监控间隔的设定调整也往往会对整体性能带来较大的负担,尤其是实时跟踪的场合下。
在Dapper的论文这样认为,有两个重要的需求需要予以满足:ubiquitous deployment和continuous monitoring。而这两个需求是对跟踪系统的使用范围(不要有死角)和运行方式(不要停)做了规范。
原文摘录:Ubiquity is important since the usefulness of a tracing infrastructure can be severly impacted if even small parts of the system are not being monitored.
实际上,所谓的无所不在的部署&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。