Fastrace: 高效易用的 Rust 分布式追踪方案
随着应用程序从单体走向分布式微服务架构,追踪(Trace)请求在各个模块间的流转变得越来越重要。然而,现有应用系统还没充分认识到分布式追踪的价值和必要性。这很大程度上是因为生态当中缺乏一个可靠、高效且易用的分布式追踪方案。
Rust 生态尤其如此。作为一个新兴的语言生态,可供 Rust 开发者选择的追踪框架并不多。目前常用的 tokio-rs/tracing
库存在明显的生态割裂、配置负载和运行低效的问题。在研发 ScopeDB 的过程中,我们深刻认识到分布式追踪对系统可观测性及问题排查的重要性。为了解决 Tracing 存在的问题,我们基于现有开源软件分叉开发维护了 Fastrace 框架。
Fastrace 经过生产环境的高压检验,可为用户提供一致且简单的 API 体验,并能与现有的 Rust 生态无缝集成,尤其是提供了高效丝滑的 OpenTelemetry 集成体验。以下是使用 Fastrace 追踪请求的简单示例:
1 |
|
ScopeDB 线上环境中一个分布式追踪的可视化实例:
本文先介绍分布式追踪及其价值,然后讨论 Fastrace 如何解决此前 Rust Tracing 方案中没能解决好的问题,并给出一个完整的日志追踪方案。最后,分享 Fastrace 开源背后的故事。