Uber正式开源其分布式跟踪系统Jaeger
极客时间编辑部
讲述:杜力大小:1.17M时长:02:34
近日,Uber 在 GitHub 上正式开源了其分布式跟踪系统 Jaeger,其灵感来源于 Dapper 和 OpenZipkin。
从 2016 年开始,Jaeger 就已经在 Uber 内部得到了广泛的应用,它可以用于微服务架构应用的监控,特性包括分布式上下文传播(Distributed context propagation)、分布式事务监控、根原因分析、服务依赖分析以及性能 / 延迟优化。目前,该项目已经被云原生计算基金会 CNCF(Cloud Native Computing Foundation)接纳为第 12 个项目。
Uber 的分布式跟踪系统是随着业务的演化而不断发展的,在由单体架构迁移至微服务架构时,传统的监视工具,例如度量值和分布式日志依然能够发挥作用,但这类工具往往无法提供跨越不同服务的可见性。因此,就有必要引入分布式跟踪的工具。
最初,Uber 所使用的跟踪工具叫做 Merckx。Merckx 架构使用了拉取模式,可从 Kafka 的指令数据中拉取数据流,其不足之处在于主要面向单体式 API 的时代,缺乏分布式上下文传播的概念。
随后,Uber 开发了 TChannel,这是一种适用于 RPC 的网络多路复用和框架协议。很多新构建的服务都使用了 TChannel,但是承担核心业务的大部分服务都没有使用它。这些服务主要是通过四大编程语言 Node.js、Python、Go 和 Java 实现的,在进程间通信方面使用了多种不同的框架。这种异构的技术环境使得 Uber 在分布式追踪系统的构建方面会面临比谷歌和 Twitter 更严峻的挑战。
因此,Uber 专门组建了分布式跟踪团队,团队目标就是将现有的 TChannel 原型系统转换为一种可以全局运用的生产系统,让分布式追踪功能可以适用并适应 Uber 的微服务。该团队集思广益,创建了 Jaeger 项目。
Jaeger 兼容 OpenTracing 的数据模型和 instrumentation 库,能够为每个服务 / 端点使用一致的采样方式。另外,Jaeger 客户端库是 OpenTracing API 的特定语言实现。它们可以对要进行分布式跟踪的应用进行 instrument 操作,这些应用可以手动实现,也可以使用各种已有的开源的框架,比如 Flask、gRPC 等。
按照其官网的介绍,未来计划加入的功能包括自适应采样(Adaptive Sampling)、提供更多种语言的客户端库、延迟矩阵图、动态配置、基于 Apache Flink 构建数据管道等,以支持 Trace 聚集和数据挖掘。
除此之外,Jaeger 0.70 版本已支持服务到服务的依赖图,未来还会支持基于路径的依赖图,能够展现出某项服务的所有上下流依赖,而不仅仅是临近的服务。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论