取出垃圾:大规模对象存储的垃圾收集

主要观点:作者在过去 10 年基于对象存储构建了多个分布式系统,其中 WarpStream 是最近的一个,在这些系统中花费大量时间解决从对象存储中删除逻辑删除文件的问题。
关键信息

  • 共享存储系统架构,客户端与无状态节点交互,抽象共享存储后端和强一致元数据存储以创建逻辑抽象。
  • WarpStream 文件可因数据过期、主题删除或参与压缩而逻辑删除,需从对象存储中物理删除。
  • 几种解决删除文件问题的方法,如延迟队列、异步协调及两者结合。
  • 不用桶策略的原因,因其不适合复杂系统,无法处理 Kafka 中的一些特性。
  • 不用同步删除的原因,可能导致孤儿文件,影响查询且增加成本。
  • 延迟队列方法可避免孤儿文件,但难以保证无 bug;异步协调方法较易实现但成本高。
  • WarpStream 最终采用在 WarpStream 代理中创建“乐观删除队列”的混合方法,大幅降低成本和开销。
    重要细节
  • 不同情况下文件逻辑删除的图示,如数据过期、主题删除、参与压缩等。
  • 同步删除代码示例及可能出现的问题,如节点崩溃导致文件孤儿。
  • 延迟队列在元数据存储内的原子操作代码示例及优势。
  • 异步协调的代码示例及与传统编程理论的类比。
  • 混合方法中在代理中创建队列及后台协程删除文件的代码示例。
阅读 24
0 条评论