大规模分布式链路分析计算在字节跳动的实践

动手点关注

8a99f459f490a3a0a20e6fbac9b942ff.gif

干货不迷路

1. 综述

微服务架构的快速发展使得分布式链路追踪系统成为观测体系中越来越重要的组件。字节跳动的分布式链路追踪系统经历了数年的发展后,已覆盖了字节的绝大部分在线业务,完成了对数万微服务和数百万微服务实例的在线链路追踪。在经典的指标观测分析和单请求链路追踪的基础上,如何从浩瀚如海的分布式链路数据中进一步挖掘出更高层次的信息,为业务的架构优化、服务治理、成本优化等场景提供更高效的数据支持,成为了下一步亟待回答的问题。

本次分享主要介绍我们构建海量链路数据分析计算系统的实践经验,以及一些具体的落地场景。

2. 可观测性与链路追踪

2.1 基本概念

为了方便读者更好的理解“链路分析”,首先浅聊一下什么是“可观测性”和“链路追踪”。对“可观测性”和“链路追踪”的概念已经熟悉的读者可以跳过本章节。

随着微服务架构的快速发展,软件系统正在从单体应用发展为由大量微服务节点构成的复杂应用。为了更好的管控复杂的软件系统,“可观测性”工具正在变得越来越重要。“可观测性”工具构建的基础是可观测性数据,可观测性数据一般包括如下部分:链路追踪 Trace、日志 Logging、时序 Metrics、代码级 Profiling、事件 Event 和 元数据相关的 CMDB 等。

0aa1d2c20c9975f7235d03477de42f9c.png

为了帮助大家对可观测性工具有一个更直观的感受,这里用一个例子来阐述如何基于可观测性工具来解决工作中的实际问题:某值班人员收到告警通知服务的失败率正在上升,点击关联到错误指标对应的 Trace,在 Trace 中定位到错误的源头,在源头查看到关键的异常日志和代码栈,并发现源头报错服务正在执行一个变更操作,于是基本定位到此变更很可能就是导致此故障的原因。有了高质量的可观测性数据和工具,一个对此系统并不是非常熟悉的值班人员,就可能快速地完成此次故障的排查与止损。

6a3da39f20294f53fcdf370d78702d48.png

分布式链路追踪(Trace) 是可观测性系统的其中一个组件。狭义上讲 Trace 是对单次请求的明细追踪,记录请求在各环节上的调用关系,耗时,以及各类明细标签与事件。同时 Trace 还有一个角色是各类可观测性数据的链接纽带,即同一个 Request Context 的数据载体,分布式请求上的各类信息(Metrics/Logs..)通过 Trace 实现了可靠关联,进而可以构建各类可观测性数据的上卷下钻的跳转功能。

a5acae2b8f5a53447dc56430192999d7.png

2.2 字节链路追踪系统

字节链路追踪系统经历了数年的发展,现已覆盖公司绝大部分在线业务。整体发展历程如下:

2019: Trace 1.0 完成了 Trace 组件能力的构建。

2020: Trace 2.0 实现了 Metrics/Trace/Log 的埋点一体化,对数据协议与技术架构进行了升级,并开始构建一站式观测平台 Argos。

2021: 与字节绝大部分主流框架组件实现了默认集成,全司各业务线微服务覆盖度 > 80%。

2022: 构建与探索场景化、智能化的场景,例如本分享聊的“链路分析”。

字节链路追踪系统当前的现状数据(2022 年 10 月):

覆盖面: 5 万+ 微服务 /FAAS 数,300 万+ 容器实例数。

使用量: 日 UV 6 千+ ,日 PV 4 万+。

吞吐量: Span 数 2 千万+/s (默认 0.1% 采样)。

资源配比: 100+ CPU cores 支撑 100 万 Span/s。

SDK 性能: 单线程 40w Span/s。

查询性能: TraceID 点查 P50 < 100 ms, P99 < 500 ms。

数据产生到可检索时延: AVG < 1 分钟,P99 < 2 分钟。

存储资源: 10 PB (3 副本 TTL 15 天)。

字节链路追踪系统从数据接入侧、消费存储侧、到查询平台侧的整体架构如下图所示,更多细节可阅读之前的分享,上一次分享较为详细的介绍了如何从零到一构建一个分布式链路追踪系统。本文主要聊链路追踪系统中的链路聚合计算分析部分。

2b9861d05d95abf412bf779313065a37.png

3. 链路分析技术实践

3.1 需求场景

经常使用 Trace 的同学对 Trace 的印象可能是通过 TraceID 或者某些 Tag 检索出一条或者一些 Trace,然后从 Trace 数据中仔细查看明细的调用轨迹和各种 Tag 来分析一些具体问题,比如一个请求为什么慢,或者一个请求为什么出错了。

dffa4d631f807cbfbfbd0ac67d97b903.png

但是我们还面临着一些更高层级的问题,例如,面对一个不断变化的复杂微服务系统:

  • 稳定性:紧急状况时,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值