高可用性系统构建:“两次失误高度”原则应用
在构建和维护系统时,可用性问题是一个不可忽视的挑战。没有人能准确预测可用性问题会在何时何地出现,特别是当系统需要应对更大的客户需求和更复杂的应用时,问题出现的可能性会更高。提前做好应对可用性问题的准备,是降低问题发生可能性和严重程度的最佳方法。
数据库备份的惨痛教训
曾经有这样一个真实的故事。团队想测试修改 MySQL 数据库的某个设置对性能的影响,但又担心会导致生产数据库故障,于是决定在备份数据库上进行修改,因为当时备份数据库没有被使用。然而,备份数据库的主要作用就是为生产数据库提供备份。随着时间推移,备份数据库不断进行设置实验,逐渐与主生产数据库的设置差异越来越大。
有一天,生产数据库出现故障,备份数据库接管工作。但由于其设置与主数据库要求相差甚远,无法可靠地处理相同的流量负载,最终备份数据库也失败了,网站随之崩溃。这个故事告诉我们,如果备份数据库没有得到与主数据库同等的重视,就会失去其作为备份的主要功能。
“两次失误高度”原则的启示
在遥控飞机飞行领域,有一个术语叫“让飞机保持两次失误的高度”。当学习遥控飞机飞行,尤其是进行特技飞行时,很快就会明白这个道理。失误意味着失去高度,如果失去过多高度,飞机就会坠毁。保持“两次失误的高度”,就是让飞机飞得足够高,以便在出现两次独立失误时仍有足够的高度恢复。
在构建高可用性、大规模应用时,这个原则同样重要。当识别出应用可能面临的故障场景时,要仔细考虑这些场景的影响以及相应的恢复计划,确保恢复计划没有缺陷,能够真正发挥作用。
示例场景分析
场景 1:节点丢失
假设
超级会员免费看
订阅专栏 解锁全文
8677

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



