Jaeger是Uber的分布式跟踪系统。
大多数现有的Zipkin兼容仪表库支持概率采样,但他们希望在初始化时配置采样率。这种方法在大规模使用时导致几个严重问题:
给定的服务几乎没有洞察采样率对跟踪后端的总体流量的影响。
在Uber,商业交通展示强烈的每日季节性; 更多的人在高峰时段乘坐。固定采样概率对于非高峰业务来说太低,而对于高峰业务又太高。
Jaeger客户端库中的轮询功能旨在解决这些问题。通过将关于适当采样策略的决定移动到跟踪后端,我们免除服务开发人员猜测适当的采样率。这还允许后端在流量模式改变时动态地调整采样率。下图显示了从收集器到客户端库的反馈循环。
![image](https://static.oschina.net/uploads/space/2017/0310/104137_DdzZ_2894582.png)
当前的Jaeger架构:在Go中实现的后端组件,支持OpenTracing标准的四种语言的客户端库,基于[React](https://facebook.github.io/react/)的Web前端以及基于[Apache Spark](http://spark.apache.org/)的后处理和聚合数据管道。