← 回總覽

字节跳动首创 DisCoGC 架构,重塑 EB 级分布式存储 GC 范式

📅 2026-04-17 12:04 字节跳动技术团队 软件编程 2 分鐘 1965 字 評分: 92
分布式存储 垃圾回收 日志结构存储 字节跳动 系统优化
📌 一句话摘要 本文介绍了字节跳动基础设施团队与清华大学合作提出的 DisCoGC 架构,这是一种融合 Discard 和 Compaction 的全新垃圾回收范式,旨在解决 EB 级分布式日志结构存储中写放大与空间放大的权衡难题,已在生产环境中实现 TCO 降低 20%。 📝 详细摘要 文章详细解读了字节跳动基础设施团队与清华大学合作、被 FAST‘26 收录的论文《Discard-Based Garbage Collection for Distributed Log-Structured Storage Systems in ByteDance》的核心技术与工程实践。针对支撑字节跳动

📌 一句话摘要

本文介绍了字节跳动基础设施团队与清华大学合作提出的 DisCoGC 架构,这是一种融合 Discard 和 Compaction 的全新垃圾回收范式,旨在解决 EB 级分布式日志结构存储中写放大与空间放大的权衡难题,已在生产环境中实现 TCO 降低 20%。

📝 详细摘要

文章详细解读了字节跳动基础设施团队与清华大学合作、被 FAST‘26 收录的论文《Discard-Based Garbage Collection for Distributed Log-Structured Storage Systems in ByteDance》的核心技术与工程实践。针对支撑字节跳动 EB 级数据的自研分布式存储系统 ByteStore 面临的经典难题——日志结构存储中垃圾回收带来的写放大与空间放大权衡,团队通过分析海量生产 IO Trace,发现主流业务场景中超过 90% 的无效数据是长连续范围。基于此洞察,他们提出了 DisCoGC 架构,核心思想是放弃以 Compaction 为主的传统 GC 模式,转而以 Discard 操作为主力直接回收长连续无效数据,从根本上避免有效数据的重写以消除写放大,同时辅以低频 Compaction 回收碎片化数据。文章深入阐述了工程落地中解决跨层边界损耗、避免前台业务冲击、管理碎片化与元数据膨胀、适配底层 SSD Trim 硬件等挑战的具体方案。最终,DisCoGC 在字节大规模生产集群全量部署,实现了约 20% 的存储系统 TCO 降低,且对前台业务性能零影响。

💡 主要观点

- 通过分析 PB 级生产 Trace,发现主流业务场景的无效数据多为长连续范围,这是设计新 GC 范式的关键洞察。 团队对在线服务、搜索广告推荐、离线计算三大场景进行全量 IO Trace 分析,发现超过 70% 的写入流量会产生长连续无效数据,这为直接 Discard 而非搬运数据的方案提供了数据支撑。

提出 DisCoGC 架构,以 Discard 为主、Compaction 为辅,从根本上打破写放大与空间放大的权衡。 针对长连续无效数据,直接通过 Discard 操作标记回收,避免搬运有效数据,从而消除写放大;针对碎片化无效数据,使用低频 Compaction 作为兜底,二者协同实现高效低成本的空间回收。
工程落地面临跨层边界、资源冲击、碎片化、硬件适配等多重挑战,需设计针对性解决方案。 通过边界扩展机制、Discard 友好的 EC 条带设计解决跨层对齐问题;通过批量合并、调度流控避免冲击前台业务;通过 Discard 与 Compaction 的互补调度管理碎片化;通过 Trim Filter/Merger 机制适配不同 SSD 硬件。
DisCoGC 已在字节超大规模生产环境验证,实现显著降本增效且不影响业务性能。 全量部署后,系统空间放大和逻辑写放大均显著降低,综合实现约 20% 的 TCO 节约,同时业务延迟、带宽等核心性能指标无劣化,GC 相关 CPU 开销也得到优化。

💬 文章金句

- 传统 Compaction 为了回收这 80% 的无效空间,必须把那 20% 的有效数据读出来、重新写一遍,为了回收垃圾,反而产生了大量的额外写入,这正是写放大的核心来源。

  • 既然无效数据是连续的,我们为什么非要去搬运那一小部分有效数据?为什么不能直接把这段连续的无效空间标记回收,完全不动有效数据?
  • 用 Discard 机制直接回收长连续的无效数据,从根源上避免有效数据的重写,写放大自然就消失了;再用低频的 Compaction 做兜底,回收碎片化的无效数据,解决 Discard 带来的碎片化问题。
  • 在字节的超大规模体量下,哪怕是 10% 的空间放大,都会转化成巨额的硬件成本浪费。
  • DisCoGC 能自动适配不同的业务负载,在极低的写放大下,实现高效的空间回收,大幅降低了运维成本。

📊 文章信息

AI 初评:92

来源:字节跳动技术团队

作者:字节跳动技术团队

分类:软件编程

语言:中文

阅读时间:29 分钟

字数:7239

标签: 分布式存储, 垃圾回收, 日志结构存储, 字节跳动, 系统优化

阅读完整文章

查看原文 → 發佈: 2026-04-17 12:04:00 收錄: 2026-04-17 22:00:59

🤖 問 AI

針對這篇文章提問,AI 會根據文章內容回答。按 Ctrl+Enter 送出。