Skip to Content
混沌工程
book

混沌工程

by Casey Rosenthal, Nora Jones
July 2025
Intermediate to advanced
308 pages
3h 7m
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 混沌工程

第19章 数据库中的混沌工程 数据库中的混沌工程

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

我们为什么需要混沌工程?

自从 ,Netflix在2011年开源了 Chaos Monkey,这个程序就变得越来越受欢迎。如果你想构建一个分布式系统,让Chaos Monkey在你的集群上疯狂一下,可以帮助构建一个容错性更强、更健壮、更可靠的系统。1

TiDB是 开放源代码、分布式、混合事务/分析处理(HTAP)数据库。2数据库,主要由 PingCAP 开发。它存储的是我们认为对任何数据库用户来说都是最重要的资产:数据本身。我们的系统最基本也是最重要的要求之一就是容错。传统上,我们通过运行单元测试和集成测试来确保系统为生产做好准备,但随着集群规模的扩大、复杂性的增加以及数据量以 PB 级的速度增长,这些测试只是冰山一角。混沌工程(Chaos Engineering)对我们来说是天作之合。 在本章中,我们将详细介绍我们的实践,以及像TiDB这样的分布式系统需要混沌工程的具体原因。

鲁棒性和稳定性

要在 上建立用户对新发布的分布式数据库(如 TiDB,数据保存在相互通信的多个节点中)的信任,就必须随时防止数据丢失或损坏。但在现实世界中,故障随时随地都可能发生,这是我们无法预料的。那么,我们该如何应对这些故障呢?一种常见的方法是使我们的系统具有容错性。如果一个服务崩溃,另一个备用服务可以立即接管,而不会影响在线服务。在实践中,我们需要警惕容错会增加分布式系统的复杂性。

我们如何 才能确保容错的稳健性?测试容错能力的典型方法包括编写单元测试和集成测试。在内部测试生成工具的帮助下,我们已经开发了 2000 多万个单元测试用例。我们还利用了大量开源测试用例,如 MySQL 测试用例和 ORM 框架测试用例。然而,即使是 100% 的单元覆盖率也不等于容错系统。同样,一个经过精心设计的集成测试的系统,也不能保证它在实际生产环境中能够很好地运行。在现实世界中,任何事情都有可能发生,比如磁盘故障或网络时间协议(NTP)不同步。为了使 TiDB 这样的分布式数据库系统更加健壮,我们需要一种方法来模拟不可预测的故障,并测试我们对这些故障的响应

一个真实世界的例子

在 TiDB 中,我们使用 Raft 共识算法将数据从领导者复制到追随者,以保证各副本之间的数据一致性。当副本组中新加入一个跟随者时,它很有可能会比领导者落后多个版本。为了保持数据的一致性,领导者会发送快照文件供跟随者应用。这是一个可能出错的地方。图 19-1显示了我们在生产环境中遇到的一个典型案例。

A real-world bug found in TiDB snapshot. The “_write.sst” and “_lock.sst” files should not be 0 bytes according to the information in the “.meta” file.
图 19-1. 在 TiDB 快照中发现的一个实际错误。根据.meta文件中的信息,_write.sst_lock.sst文件不应为 0 字节。

如图 19-1 所示,快照由四部分组成:一个元文件(后缀名为.meta)和三个数据文件(后缀名为.sst)。元文件包含所有数据文件的大小信息和相应的校验和,我们可以用它来检查接收到的数据文件是否有效。

对于新创建的副本,图 19-2显示了如何在 Raft Leader 和跟随者之间验证 快照的一致性。从日志中可以看到,有些大小为零,但实际上在元文件中并不为零。这意味着快照已损坏。

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Reinventing the Organization for GenAI and LLMs

Reinventing the Organization for GenAI and LLMs

Ethan Mollick
What Employees Want Most in Uncertain Times

What Employees Want Most in Uncertain Times

Kristine W. Powers, Jessica B.B. Diaz
What Successful Project Managers Do

What Successful Project Managers Do

W. Scott Cameron, Jeffrey S. Russell, Edward J. Hoffman, Alexander Laufer

Publisher Resources

ISBN: 9798341662919