← 返回AI教程
🌐 其他

Stripe 利用 Graph Search 和状态机实现数据库修复自动化

来源:InfoQ 中文 · 发布于 2026-08-18 22:00:00
Stripe 工程团队最近介绍了他们如何通过将全球基础设施建模为图,来实现数据库故障恢复的自动化。该团队将图搜索算法与状态机相结合,自动计算并执行故障修复方案。据作者介绍,该系统现在可以动态适应不同的 MongoDB 分片布局,将数据库相关的寻呼告警减少了约 30%。这意味着每年可以减少 200 次寻呼,同时预计每年可…

Stripe 工程团队最近介绍了他们如何通过将全球基础设施建模为图,来实现数据库故障恢复的自动化。该团队将图搜索算法与状态机相结合,自动计算并执行故障修复方案。

据作者介绍,该系统现在可以动态适应不同的 MongoDB 分片布局,将数据库相关的寻呼告警减少了约 30%。这意味着每年可以减少 200 次寻呼,同时预计每年可以消除约 12 天的分片异常状态。

Stripe 发现,他们最初基于插件、采用硬编码的修复系统难以提供良好的可扩展性,因为脆弱的依赖关系、复杂的多故障场景、特定于布局的逻辑以及未处理的中间状态,所以修复过程往往需要人工干预。作者指出:

在一个长为六个月的时间段内,控制平面因分片配置错误向运维人员发送了 124 次告警,另有 32 次告警是由于单节点故障并伴有其他健康问题所导致的复杂情况。每次事件平均会将索引构建和计划内维护等关键操作阻塞一个小时之久。

为了消除这些限制,Stripe 将 MongoDB 基础设施建模为图,其中节点代表基础设施组件,边反映它们之间的关系,节点属性则描述其当前状态。

通过移除原先硬编码的修复序列,Stripe 现在依靠图遍历来识别有效的恢复路径,使相同的修复逻辑能够自动适应不同的数据库布局和不断演变的基础设施。

图片来源:Stripe 博客

Stripe 最初使用广度优先搜索(BFS)来查找有效的修复路径,但后来改用了 Dijkstra 算法,优先考虑成本相对较低的恢复方案,在保证正确性的同时减少了不必要的操作:

由于 Dijkstra 算法会探索通往所有可达状态的路径,而不仅仅是目标状态,所以我们也能获得部分修复方案。当不存在完整的路径时,该算法会返回通往最小错误配置状态的路径。

Stripe 并未将恢复逻辑嵌入到固定的工作流中,而是将修复过程建模为具有显式状态转换的可组合规则,从而使规划人员能够随着基础设施的演进动态组合各项操作。根据这篇文章的描述,该团队计划将该框架的应用范围从故障恢复扩展至拓扑变更和蓝绿部署的自动化,并协调计划性维护与反应式修复工作。该团队总结道:

对于管理复杂分布式基础设施的团队而言,这种结合状态机建模、模拟规划以及运行时寻路的模式,为随着时间推移越来越具体的运行手册提供了一种极具吸引力的替代方案。运行手册记录了已知的恢复流程,而状态机则能发现全新的恢复方案。

Stripe 并非唯一一家投资于自动化基础设施运维的大型软件公司。Uber 最近介绍了其声明式、自愈型 Odin 平台,而 Meta 则详细介绍了用于加速事件响应的人工智能辅助工具。Stripe 开发基础设施负责人 Scott MacVicar 在 LinkedIn 上写道

运营全球数据库集群意味着必须接受硬件性能退化和分片异常是家常便饭这一事实。在大规模环境下,挑战不仅在于解决问题,更在于如何在不让值班工程师精疲力竭的情况下完成这些工作。

Stripe 工程团队近期还发布了其它两篇技术文章,分别介绍了 Stripe Connect 中的资金隔离机制,以及用于处理轻量事件的事件通知处理器

原文链接:https://www.infoq.com/news/2026/08/database-remediation-graph/