本文介绍了 Dropbox 如何通过重新设计 Magic Pocket 不可变对象存储系统的压缩策略(引入 L2 和 L3 分层压缩),以解决因新服务导致的数据碎片化和存储效率下降问题。
📝 详细摘要
文章基于 InfoQ 对 Dropbox 技术博客的编译报道,详细阐述了 Dropbox 在应对其自研对象存储系统 Magic Pocket 存储效率挑战时的技术演进。核心问题是,为提升写入吞吐量而引入的新服务意外加剧了数据碎片化,导致大量存储卷严重未填满(部分使用率低于 5%),显著增加了存储开销。原有的压缩策略在卷接近满载时有效,但无法高效处理大量稀疏卷。为此,Dropbox 设计了新的分层压缩策略:L2 策略通过合并多个稀疏卷来快速回收空间;L3 策略则针对极端稀疏的卷,通过流式迁移数据到新的纠删码卷中。文章还引用了 Hacker News 上的讨论,有评论质疑大公司为何未能提前预测此类问题,而 Dropbox 工程师则回应称大规模系统的运行缓慢且不均匀,影响难以即时察觉。
💡 主要观点
- Dropbox 的 Magic Pocket 系统因新服务引入导致数据碎片化加剧。 为提升写入吞吐量而移除 SSD 缓存的服务,意外改变了数据分布,导致大量存储卷严重未填满,部分使用率低于 5%,增加了存储开销。
💬 文章金句
- 由于数据是不可变的,删除操作不会立即释放磁盘空间。旧数据仍然保留在存储卷中。
- 压缩过程负责执行物理层面的空间回收。由于卷在关闭后无法修改,我们会从这些卷中收集仍然有效的数据块(blob),将其写入新的卷,并淘汰旧卷。
- 我原以为这种体量的公司,在动这种会影响巨额基础设施成本的改动前,都会拿生产数据反复建模推演......结果发现也差不多:先发了再说,看看哪儿先炸。
- 大规模系统的运行往往是缓慢且不均匀的,这使得基础设施变更带来的影响难以及时察觉。
📊 文章信息
AI 初评:83
来源:InfoQ 中文
作者:InfoQ 中文
分类:软件编程
语言:中文
阅读时间:7 分钟
字数:1663
标签: Dropbox, Magic Pocket, 对象存储, 数据碎片化, 压缩策略