查看原文
其他

【新开源报道 20】Uber正式开源其分布式跟踪系统Jaeger

2017-11-11 开源最前线
开源最前线(ID:OpenSourceTop) 猿妹整编

综合自:infoq、GitHub等


Uber 在 GitHub 正式开源了分布式跟踪系统 Jaeger,其灵感来源于 Dapper 和 OpenZipkin,从 2016 年开始,该系统已经在 Uber 内部得到了广泛的应用。

分布式追踪系统 Jaeger


授权协议:MIT

开发语言:Google Go

操作系统:跨平台

开发厂商:Uber

Github:https://github.com/jaegertracing/jaeger


Jaeger 简介


它可以用于微服务架构应用的监控,特性包括分布式上下文传播(Distributed context propagation)、分布式事务监控、根原因分析、服务依赖分析以及性能/延迟优化。该项目已经被云原生计算基金会(Cloud Native Computing Foundation,CNCF)接纳为第 12 个项目。


大多数现有的 Zipkin 兼容仪表库支持概率采样,但他们希望在初始化时配置采样率。这种方法在大规模使用时导致几个严重问题:

● 给定的服务几乎没有洞察采样率对跟踪后端的总体流量的影响。

● 在 Uber,商业交通展示强烈的每日季节性;更多的人在高峰时段乘坐。固定采样概率对于非高峰业务来说太低,而对于高峰业务又太高。

● Jaeger 客户端库中的轮询功能旨在解决这些问题。通过将关于适当采样策略的决定移动到跟踪后端,我们免除服务开发人员猜测适当的采样率。这还允许后端在流量模式改变时动态地调整采样率。下图显示了从收集器到客户端库的反馈循环。



Jaeger 架构


当前的 Jaeger 架构:在 Go 中实现的后端组件,支持 OpenTracing 标准的四种语言的客户端库,基于 React 的 Web 前端以及基于 Apache Spark 的后处理和聚合数据管道。Jaeger 的各组件关系如下图所示:



Agent:Agent 是一个网络守护进程,监听通过 UDP 发送过来的 Span,它会将其批量发送给 collector。按照设计,Agent 要被部署到所有主机上,作为基础设施。Agent 将 collector 和客户端之间的路由与发现机制抽象了出来。


Collector:Collector 从 Jaeger Agent 接收 Trace,并通过一个处理管道对其进行处理。目前的管道会校验 Trace、建立索引、执行转换并最终进行存储。存储是一个可插入的组件,现在支持 Cassandra。


Query:Query 服务会从存储中检索 Trace 并通过 UI 界面进行展现,该UI界面通过React技术实现



Span:代表了系统中的一个逻辑工作单元,它具有操作名、操作开始时间以及持续时长。Span可能会有嵌套或排序,从而对因果关系建模。一个RPC调用的Span如下图所示。

Trace:代表了系统中的一个数据/执行路径,可以理解成Span的有向无环图。



Jaeger 客户端库


Jaeger 客户端库是 OpenTracing API 的特定语言实现。它们可以对要进行分布式跟踪的应用进行 instrument 操作,这些应用可以手动实现,也可以使用各种已有的开源的框架,比如 Flask、Dropwizard、gRPC 等。



需要注意的是,所有的 Trace 都会生成,但是只有其中的一小部分会被采样。默认情况下,Jaeger 会采样 0.1% 的 Trace。


附:新开源报道汇总

《【新开源报道 19】Uber与斯坦福大学开源深度概率编程语言Pyro》

《【新开源报道 18】谷歌开放内部工具 Colaboratory 来协助 AI 开发》

《【新开源报道 17】这波开源满分!清华大学开源网络嵌入的工具包 —— OpenNE

《【新开源报道 16】AI开发者福音!微软亚马逊联合发布深度学习库 Gloun》

《【新开源报道 15】谷歌发布量子开源软件,量子计算机对科学家免费开放 》

《【新开元报道 14】微软开源用于Spark的深度学习库MMLSpark》

《【新开源报道 13】Facebook 开源帮助开发者消灭最顽固的软件 bug 的工具》

《【新开源报道 12】不只是阿里巴巴的操作系统,AliOS 宣布开源》

《【新开源报道 11】重磅!阿里巴巴正式开源全球化OpenMessaging和ApsaraCache项目》

《【新开源报道 10】IBM 和谷歌等巨头联手为开发者推出开源容器安全工具Grafeas》

《【新开源报道 9】Google开源Abseil,为C++和Python开发提供支持》

《【新开源报道 8】serverless 领域的福音!Oracle 宣布开源 Fn project》

《【新开源报道 7】苹果在 GitHub 上公布 macOS 和 iOS 内核源码》

《【新开源报道 6】百度开源移动端深度学习框架mobile-deep-learning(MDL)》

《【新开源报道 5】百度正式开源其 RPC 框架 brpc》

《【新开源报道 4】IBM 开源动态的应用服务器运行时环境 Open Liberty》

《【新开源报道 3】微信后台团队最近开源力作:PhxQueue分布式队列》

《【新开源报道 2】喜大普奔!阿里即将开源 ApsaraCache,云数据库 Redis 版分支》

【新开源报道 1】腾讯 Web UI 解决方案 QMUI Web 正式回迁开源》



●本文编号79,以后想阅读这篇文章直接输入79即可

●输入m获取文章目录

↓↓↓ 点击"阅读原文" 进入GitHub详情页 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存