写点什么

从中断到有序:Netflix 使用 WAL 实现数据库韧性的方式

作者:Leela Kumili

  • 2025-11-10
    北京
  • 本文字数:1059 字

    阅读完需:约 3 分钟

大小:527.07K时长:02:59
从中断到有序:Netflix使用WAL实现数据库韧性的方式

Netflix 实现了一个预写日志(Write-Ahead Log,WAL)系统,以增强其数据平台的韧性。WAL 旨在解决 Netflix 面临的各种挑战,包括数据丢失、副本系统熵、多分区故障和数据损坏。该系统在将数据库变更应用到下游服务之前,会将它们捕获到一个持久化的日志中,确保即使在中断期间也能保持一致性和可恢复性。

 

Netflix 的 WAL 服务架构是模块化和可插拔的。每个变更都会被追加到日志中,该日志充当单一的事实来源,然后异步应用到目标数据库。系统将消息生产者与消息消费者分开,允许多个下游服务独立消费同一个日志。

 

Netflix 使用 SQS 和 Kafka,并默认启用死信队列,以确保可靠的交付和错误处理。该设计支持目标灵活性,允许将变更路由到不同的存储后端或处理管道,并与控制平面网关以及Netflix的数据网关集成,用于集中的数据库访问、配置和监控。

 

它可以添加额外的功能,如二级索引、延迟队列和通用复制服务,而不影响现有消费者。Netflix 工程师将这种方法描述为减少分布式数据库中的熵和最小化不必要的重试或冲突。



WAL 的架构(图片来源Netflix技术博客

 

Netflix 的 WAL 部署模型旨在实现可扩展性和运维简便性。该服务作为一个分布式系统运行,具有多个副本,自动在节点间平衡负载,同时保持强一致性。配置更改,如启用延迟队列或添加新的下游消费者,通过集中化的控制平面进行管理,无需代码更改,允许快速迭代和安全实验。



WAL 部署模型(图片来源Netflix技术博客

 

根据 Netflix 工程团队的说法,Netflix 的 WAL 使用涵盖了多个关键场景。延迟队列允许延迟处理变更,以适应下游系统的可用性或节流。跨区域复制确保多个地理区域之间的一致性,支持灾难恢复和高可用性。多表变更允许对多个数据库表进行原子更改,保持复杂工作流程的一致性。这些用例展示了 WAL 在支持高吞吐量、弹性数据管道中的作用。

根据 Netflix 工程师的说法:

可插拔架构以及通过配置而非代码更改支持不同目标的能力,是 WAL 在各种用例中的多功能性和有效性的关键。

 

整个行业都在出现类似的模式。在2025年旧金山QCon大会上,DoorDash将展示其预写意图日志(Write-Ahead Intent Log),旨在实现高效的大规模变更数据捕获(Change Data Capture)。该方法将写入与下游消费者解耦,实现了高吞吐量的近实时处理,每秒每表可高达一百万次写入,尾部延迟不到一秒。

 

早些时候,在 2024 年旧金山 QCon 大会上,Prudhviraj KarumanchiVidhya Arvind讨论了WAL如何提高分布式系统的持久性并减少熵,强调了它在维护复杂架构中一致状态的作用。

 

查看英文原文:From Outages to Order: Netflix’s Approach to Database Resilience with WAL

2025-11-10 15:403867

评论

发布
暂无评论

从0到1建立软件测试质量体系

程序员阿沐

软件测试 测试工程师 质量保证

程序员成长第十七篇:项目转测

石云升

项目管理 程序员 28天写作 3月日更

智慧党建管理系统,智慧组工平台开发方案

13530558032

环信大学 | 构建一套适合微服务的高可用架构

DT极客

技术解析 | Doris Compaction机制解析

百度开发者中心

百度 apache doris

Vim,人类史上最好用的文本编辑器

沉默王二

vim 开发工具 vim教程

2021最新京东、字节跳动「3面面经」盘点大厂后端面试高频题

Java架构之路

Java 程序员 架构 面试 编程语言

一线互联网大厂面经分享:阿里三面+头条四面+腾讯二面+美团四面

Java架构之路

Java 程序员 架构 面试 编程语言

「两次遍历」要比「一次遍历」要慢 ... 为啥呀?为啥呀??

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

前端上手Docker超详细基础教程

1024肥宅

Docker Linux 大前端 jenkins CI/CD

#集赞送好礼#百度大脑AI开放平台的2020年

百度大脑

第四章作业(二)

LouisN

真实字节二面:什么是伪共享?

艾小仙

Java 程序员 字节跳动 面试

算力挖矿系统开发|算力挖矿软件APP开发

系统开发

七种分布式事务的解决方案,一次讲给你听

moon聊技术

#滴滴夜莺# Nightingale & Prometheus

漂洋散人

SuperBenchmarker sb在mac上的安装手记

edd

2021备战金三银四血拼一波算法:字节+百度+美团+网易+拼夕夕+腾讯+滴滴

比伯

Java 编程 程序员 架构 面试

四面美团开发岗,成功斩获offer,分享个人面经

Java架构之路

Java 程序员 架构 面试 编程语言

Kubernetes 稳定性保障手册 -- 极简版

阿里巴巴云原生

云计算 容器 开发者 云原生 k8s

Serverless 如何在阿里巴巴实现规模化落地?

阿里巴巴云原生

阿里巴巴 Serverless 容器 微服务 云原生

887页Java面试“成神”手册,已助朋友狂砍9个一二线大厂Offer

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

浅谈基于ARP协议的网络攻击

行者AI

网络安全

想做技术自媒体实现财富自由?先看看广告报价吧,无编码学爬虫之二。

梦想橡皮擦

Python 28天写作 2月春节不断更 3月日更

数据库周刊59丨GaussDB(for openGauss)开放商用;人大金仓保障冬奥会演练顺利完成;MDL锁导致的MySQL问题分析;PG日志使用手册;达梦表空间查询;数据库笔试题面试题集……

墨天轮

MySQL 数据库 程序员 运维 postgre

接口测试--apipost中cookie管理器的使用

测试人生路

接口 Cookie

Pgbouncer最佳实践:系列一

PostgreSQLChina

数据库 postgresql 软件 开源社区

区块链农产品溯源平台,农产品区块链防伪

13530558032

图解CyclicBarrier运动员接力赛

叫练

面试 AQS CyclicBarrier

别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境(2021最新攻略)

刘悦的技术博客

ruby ruby-on-rails rubygems macOS Big Sur m1

打破垄断 上海发布自主研发树图区块链重大成果

CECBC

区块链

从中断到有序:Netflix使用WAL实现数据库韧性的方式_数据库_InfoQ精选文章