数据库中的混沌工程实践
为何需要混沌工程
自 2011 年 Netflix 开源了 Chaos Monkey 后,这个程序越来越受欢迎。若要构建分布式系统,让 Chaos Monkey 在集群中制造一些混乱,有助于打造更具容错性、健壮性和可靠性的系统。
TiDB 是由 PingCAP 开发的开源分布式混合事务/分析处理(HTAP)数据库,它存储着对数据库用户而言最重要的资产——数据本身。系统的一个基本且首要的要求是具备容错能力。传统上,我们通过运行单元测试和集成测试来确保系统可投入生产,但随着集群规模扩大、复杂性增加以及数据量达到 PB 级别,这些测试只是冰山一角。因此,混沌工程对我们来说是一种自然的选择。
健壮性和稳定性
要让用户信任像 TiDB 这样新发布的分布式数据库(数据存储在相互通信的多个节点中),必须随时防止数据丢失或损坏。但在现实世界中,故障可能随时随地以意想不到的方式发生。一种常见的应对方法是使系统具备容错能力,即当一个服务崩溃时,另一个备用服务能立即接管,而不影响在线服务。然而,需要注意的是,容错会增加分布式系统的复杂性。
要确保系统的容错能力足够强大,典型的测试方法包括编写单元测试和集成测试。借助内部测试生成工具,我们开发了超过 2000 万个单元测试用例,还利用了大量开源测试用例,如 MySQL 测试用例和 ORM 框架测试用例。但即便实现了 100% 的单元测试覆盖率,也不意味着系统就具备容错能力;同样,通过精心设计的集成测试的系统,也不能保证在实际生产环境中能良好运行。在现实中,可能会出现各种问题,如磁盘故障或网络时间协议(NTP)不同步。为了让 TiDB 这样的分布式数据库系统更健壮,我们需要一种方法来模拟不
超级会员免费看
订阅专栏 解锁全文
1034

被折叠的 条评论
为什么被折叠?



