分布式跟踪系统

Twitter zipkin 分布式跟踪系统的设计与实现

血红的双手。 提交于 2019-12-10 05:40:54
概述 Twitter的zipkin是一个致力于收集Twitter所有的分布式服务的时间数据的分布式跟踪系统。它提供了收集数据,和查询数据两大服务。系统的理论模型来自于Google Dapper 论文。 Dapper这篇论文可以点击这里 。 为什么需要分布式跟踪系统? 通过采集跟踪数据可以帮助开发者深入了解在分布式系统中某一个特定的请求时如何执行的。假如说,我们现在有一个用户请求超时,我们就可以将这个超时的请求调用链展示在UI当中。我们可以很快度的定位到导致响应很慢的服务究竟是什么。如果对这个服务细节也很很清晰,那么我们还可以定位是服务中的哪个问题导致超时。 架构 一般来说,分布式跟踪系统由以下组件构成。 封装基础框架 跟踪的信息是通过封装好的框架,部署在每台机器上面,然后发送到zipkin。当主机对某一个服务发起请求时,请求所经过的路径都会被跟踪记录下来,并且最终会在zipkin 的服务器端把这些调用链组装起来。Twitter对一些的基础框架作了封装,以便于对请求做拦截,并且在拦截的同时,还会把 Trace header 传递到下一层。 Finagle Finagle 是Twitter的 SOA 框架,支持Java/Scala两种语言。 Finagle 在Twitter被广泛使用,通过finagle来支持跟踪是一个非常自然的入口点。目前twitter可以使它支持客户端