把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

Netflix 通过中心化的平台架构解决了大规模数据删除的问题

作者:Eran Stiller

  • 2025-12-01
    北京
  • 本文字数:1460 字

    阅读完需:约 5 分钟

大小:738.54K时长:04:12
Netflix通过中心化的平台架构解决了大规模数据删除的问题

Netflix 的工程师Vidhya ArvindShawn Liu在旧金山 QCon 会议上介绍了他们为集中式数据删除平台设计的架构,该平台解决了一个非常关键但较少讨论的系统设计挑战。平台在管理跨异构数据存储的删除操作时,同时平衡了持久性、可用性和正确性。迄今为止,它已经处理了 1300 个数据集中的 768 亿行删除操作,没有发生任何数据丢失事件。

 

分布式系统中的数据删除面临的挑战远远超出了简单的数据库操作。工程师们面临一个基本的困境:对意外破坏关键信息的恐惧使团队变得非常谨慎,但未能删除数据可能会使他们面临GDPR等法规的法律风险,同时会增加存储成本,并侵蚀客户信任。演讲者强调,“删除不能是事后才有的想法”。Netflix 平台的一个主要驱动力是管理频繁的端到端生产测试产生的测试数据。这些测试验证了系统功能,但在系统中留下了大量的“垃圾”数据。

 

当数据跨越多个存储引擎并且这些这些引擎具有不同的删除特征时,复杂性会进一步加深。Cassandra使用背景压缩(background compaction),这涉及到 CPU 成本和潜在的峰值;Elasticsearch依赖于最终的段合并,这会带来高资源使用的影响;而Redis使用延迟或主动过期。即使是高效的删除操作也可能导致后台资源的峰值,这可能会影响系统稳定性。该平台还解决了数据复活问题,即由于配置错误、节点长时间停机或同步问题,已删除的数据可能会重新出现——演讲者称之为“机器中的幽灵”。



删除的隐形成本

 

Netflix 的解决方案围绕三个基础支柱构建。持久性确保数据最终会通过精细管理在分布式系统中传播的副本来删除。可用性通过将删除操作视为低优先级请求,并使用异步处理,从而优先考虑实时流量,保持系统运行。正确性确保即使在竞争条件存在的情况下也能准确删除。

 

平台架构集成了多个组件。控制平面触发工作流程,审计 job 在系统间识别可删除的数据,校验 job 验证标记的数据,删除服务协调删除操作。日志和恢复服务通过时间戳维护删除历史,使数据能够在 30 天内恢复,同时保持数据的完整性。



Netflix 数据删除平台的整体架构

 

为了在批量删除期间保持韧性,Netflix 实现了多个安全措施。背压(backpressure)机制使用资源的占用指标来确定删除速度,随着数据库负载的增加而减慢操作。速率限制会从每秒低请求开始,随着安全容量的允许而逐渐增加,并使用压缩指标来实现限流操作。指数退避能够防止在故障期间对集群的强力冲击。

 

全面的监控会通过关键指标跟踪删除操作的健康信息,包括可删除记录计数、最大保留超限以及成功与失败删除的比率。集中式的仪表盘能够提供可见性,因此团队相信平台能够正确处理他们的数据。最终结果证明了该平台的有效性:1300 个处于管理状态的数据集,零数据丢失,总删除 768 亿行数据,启用 125 个审计配置,每日删除记录数超过 300 万。



Netflix 数据删除平台:输出和每日删除的数据行计数

 

Netflix 的关键建议包括持续审计删除失败,构建集中式平台而不是分散的解决方案,深入理解存储引擎的细节,并积极应用韧性技术,包括扩展 TTL、资源利用监控、速率限制和高优先负载的减载。最重要的是,组织必须通过严格的验证、集中的可见性和展示可靠的数据处理来建立信任。

 

该平台展示了如何将删除视为第一等的架构关注点,这需要专用的基础设施,而不是运维的事后想法。演讲者分享了这个系统是如何从一个令人沮丧的生产事件中出现的,也就是一个错误的命令在深夜部署期间触发了连锁数据丢失,给工程师们带来了巨大的压力和内疚感。演讲者指出,“我们核心决策是确保这样的危机永远不会重演”。

 

原文链接:

Netflix Tackles Data Deletion at Scale with Centralized Platform Architecture

2025-12-01 10:538

评论

发布
暂无评论

前端之数据结构(四)

Augus

数据结构 8月日更

架构设计能力提升

arctec

iOS开发:实现点击常用控件弹出地区选择框(万能方法)

三掌柜

8月日更 8月

电商秒杀系统

Presley

Flutter Android 端 Activity/Fragment 流程源码分析

工匠若水

flutter android 0 基础学习 Flutter 8月日更

架构师实战营模块四作业

袁小芬

数字化加速碳基文明向硅基文明的演进

小鲸数据

数字化 数字孪生 碳基文明 硅基文明

每个人都可以说不

escray

学习 极客时间 朱赟的技术管理课 8月日更

【LeetCode】用两个栈实现队列Java题解

Albert

算法 LeetCode 8月日更

毕业设计

Chris Cheng

毕业设计电商秒杀系统

梦寐凯旋

#架构实战营

期末设计

Geek_9cf7b5

Linux之crontab命令

入门小站

Linux

架构实战营 - 模块四作业

Julian Chu

架构实战营

毕业总结

Chris Cheng

架构训练营

【Flutter 专题】74 图解基本 DropdownButton 下拉选项框按钮

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

kubernetes/k8s CRI分析-kubelet创建pod分析

良凯尔

Kubernetes 源码分析 Kubernetes Plugin #Kubernetes# cri-o

我能行我能行!字节三面 + 微信四面 +PayPal 四面, 大厂面经分享

Java 编程 程序员 架构 IT

总结

wade

#架构实战营

在线身份证号码提取生日工具

入门小站

工具

Go并发之同步异步、异步回调

Regan Yue

高并发 协程 Go 语言 8月日更

趁着课余时间学点Python(六)终止循环,阻断循环

ベ布小禅

8月日更

千万级学生管理系统考试试卷存储方案

面向对象的猫

08-消息队列备选架构选择和细化

Lane

三十多岁跳槽无路,晋升无门,濒临绝望之际受贵人指点,成功上岸阿里(Java 岗)

Java 编程 程序员 架构 计算机

Tensorflow随笔(二)

毛显新

人工智能 深度学习 tensorflow keras

业务架构图的定位:表达业务层级和关系

arctec

一款非常简单的基于WebRTC的视频预览播放器(具有贴图、视频特效)

liuzhen007

8月日更

07-数据库存储架构

Lane

【设计模式】组合模式

Andy阿辉

C# 后端 设计模式 8月日更

oeasy教您玩转vim - 10 - # 插入新行

o

Netflix通过中心化的平台架构解决了大规模数据删除的问题_大数据_InfoQ精选文章