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