您当前的位置:首页 > 互联网百科 > 百科

Google SRE 二十年的经验教训

时间:2023-12-11 10:56:02  来源:  作者:dbaplus社群

前言

二十年可以发生很多事情,尤其是当你忙于发展的时候。

二十年前,谷歌有一对型数据中心,每个中心有几千台服务器,通过一对 2.4G 网络链路环形连接。我们使用 Python/ target=_blank class=infotextkey>Python 脚本(如 "Assigner"、"Autoreplacer "和 "Babysitter")运行我们的私有云(虽然当时我们并不这么称呼它),这些脚本在包含单个服务器名称的配置文件上运行。我们有一个小型的机器数据库(MDB),可以帮助整理和保存单个服务器的信息。我们的工程师小团队使用脚本和配置文件自动解决一些常见问题,并减少了管理服务器小舰队所需的人工劳动。

时光荏苒,google 的用户为搜索而来,为免费的 GB GmAIl 而去,我们的机群和网络也随之发展壮大。如今,就计算能力而言,我们的规模是 20 年前的 1000 多倍;就网络而言,我们的规模是 20 年前的 10000 多倍,而且我们在每台服务器上花费的精力比以前少得多,同时我们的服务堆栈也具有更好的可靠性。我们的工具已经从一系列 Python 脚本发展到集成的服务生态系统,再到默认提供可靠性的统一平台。我们对分布式系统的问题和故障模式的理解也在不断发展,因为我们遇到了新的故障类型。我们创建了 不幸之轮 ("Wheel of Misfortune")[1],编写了 服务最佳实践指南 ("Service Best Practices guides")[2],出版了《Google's Greatest Hits》,今天,我们非常高兴地向大家介绍:

  • 本杰明-特雷纳-斯洛斯,谷歌 SRE 的创建者

网站可靠性工程二十年的经验教训

让我们从 2016 年说起,那时候 YouTube 还在提供 "阿黛尔的拼车卡拉 OK "和永远吸引人的 "Pen-PineApple-Apple-Pen"等您最喜爱的视频。由于 YouTube 的分布式内存缓存系统出现错误,YouTube 经历了长达 15 分钟的全球中断,导致 YouTube 服务视频的能力中断。以下是我们从这次事件中学到的教训。

1. 缓解事故的程度应与事故的严重程度成正比 (The riskiness of a mitigation should scale with the severity of the outage)

有这样一个笑话:一个人在网上发布了一张在自己家里看到蜘蛛的照片,The Captain 说:"是时候搬到新房子了!"。这个笑话的意思是,对这一事件(看到一只可怕的蜘蛛)将采取严厉的缓解措施(放弃你现在的家,搬到新家)。我们在 SRE 中也有过一些有趣的经历,那就是选择一种风险大于其所要解决的故障的缓解措施。在前面提到的 YouTube 故障事件中,一个冒险的负载削减过程并没有解决故障问题。……反而造成了连锁故障。

我们深刻地认识到,在事故发生期间,我们应该监控和评估情况的严重性,并选择与严重性相适应的故障缓解途径。在最好的情况下,有风险的缓解措施可以解决故障。而在最坏的情况下,故障缓解措施会失灵,导致中断时间延长。此外,如果一切正常,您可以做出绕过标准程序的明智决定。

2. 应在紧急情况发生前对恢复机制进行全面测试 (Recovery mechanisms should be fully tested before an emergency)

在高大的城市建筑中进行紧急消防疏散,是第一次使用梯子的绝佳机会。同样,中断也是第一次尝试危险的负载下降过程的绝佳机会。为了在高风险、高压力的情况下保持冷静,事先练习恢复机制和缓解措施并验证以下几点非常重要:

  • 它们能满足您的需求
  • 你知道如何去做

测试恢复机制还有一个有趣的副作用,就是可以降低执行其中某些操作的风险。自从下面这次混乱的故障后,我们加倍努力进行测试。

3. 金丝雀所有变更 (Canary all changes)

有一次,我们想推送缓存配置变更。我们非常确定这不会导致任何不良后果。但 "非常确定" 并不是百分之百的确定。结果发现,缓存对 YouTube 来说是一个相当关键的功能,而配置更改带来了一些意想不到的后果,使服务完全瘫痪了 13 分钟。如果我们采用渐进式发布策略 金丝雀所有变更 (canaried those global changes)[3],这次故障本可以在对全球造成影响之前得到遏制。在这里阅读有关金丝雀策略的更多信息[4],以及 在视频中了解更多信息[5]。

大约在同一时期,YouTube 稍微年轻一些的兄弟公司 Google Calendar 也经历了一次故障,这也是接下来两节课的背景。

4. 有一个 "大红色(急停)按钮"(Have a "Big Red Button")

"急停按钮"是一种独特但非常实用的安全功能:它应该启动一个简单、易于触发的操作,将触发不良状态的因素还原为(理想情况下)关闭正在发生的一切。"急停按钮" 有很多种形状和大小--在提交潜在的危险操作之前,确定这些红色按钮可能是什么非常重要。我们曾险些触发一次重大故障,还好提交可能触发变更的工程师在变更传播之前拔掉了台式电脑的电源。因此,在计划重大部署时,请考虑什么是我的 "红色按钮"?确保每个服务依赖项都有一个 "红色按钮",以便在紧急情况下使用。更多信息,请参阅 "通用缓解措施"[6]!

5. 仅有单元测试是不够的,还需要集成测试 (Unit tests alone are not enough - integration testing is also needed)

啊。……单元测试。它们验证单个组件是否能按照我们的要求执行。单元测试有意限制了测试范围,而且非常有用,但它们也无法完全复制运行时环境和可能存在的生产需求。因此,我们大力提倡集成测试!我们可以使用集成测试来验证作业和任务是否可以执行冷启动。事情是否能按我们希望的方式运行?各组件能否按照我们的要求协同工作?这些组件能否成功创建我们想要的系统?我们在一次 Calendar 故障中吸取了这一教训,在这次故障中,我们的测试并没有遵循与实际使用相同的路径,结果导致大量的测试。..... 这并不能帮助我们评估变更在现实中的表现。

转到 2017 年 2 月发生的一起事件,我们找到了下两个教训。

首先,不可用的 OAuth 令牌导致数百万用户注销了设备和服务,32000 台 OnHub 和 Google wifi 设备执行了出厂重置。由于登录失败,手动恢复账户的要求增加了 10 倍。谷歌花了大约 12 个小时才完全从故障中恢复过来。

6. 通信渠道!和备份渠道!! 以及这些备份渠道的备份!!!(COMMUNICATION CHANNELS! AND BACKUP CHANNELS!! AND BACKUPS FOR THOSE BACKUP CHANNELS!!!)

是的,那是一段糟糕的时光。你想知道是什么让情况变得更糟吗?各团队都希望能够使用 Google Hangouts 和 Google Meet 来管理事件。但是,当 3.5 亿用户注销了他们的设备和服务时。……回过头来看,依赖这些谷歌服务是一个错误的决定。请确保您拥有非依赖性的备份通信渠道,并对其进行过测试。

然后,2017 年的同一事件让我们更好地理解了 优雅降级 (graceful degradation):[7]

7. 刻意降级性能模式 (Intentionally degrade performance modes)

人们很容易将可用性理解为 "完全正常 "或 "一切正常"...... 但是,通过降级性能模式持续提供最低限度的功能,有助于提供更加一致的用户体验。因此,我们谨慎而有意地构建了性能降级模式——因此在不稳定的情况下,用户可能根本无法看到它(可能现在就在发生!)。服务应优雅地降级,并在特殊情况下继续运行。

下一课是一项建议,旨在确保您的最后一道防线系统在极端情况下(如自然灾害或网络攻击)如期运行,从而导致生产力或服务可用性的损失。

8. 测试抗灾能力 (Test for Disaster resilience)

除了单元测试和集成测试,还有其他类型的重要测试:灾难应急和恢复测试 (disaster resilience and recovery testing)。灾难应急 (disaster resilience) 测试验证您的服务或系统在发生故障、延迟或中断时能否继续运行,而恢复测试 (recovery testing) 则验证您的服务能否在完全关闭后恢复到正常状态。正如 "经受住意外"[8] 中所述,两者都应成为业务连续性战略的关键部分。一项有用的活动还可以是让团队坐下来,以桌面游戏的方式讨论其中一些情景在理论上是如何发生的。这也是一个探索那些可怕的 "如果"的有趣机会,例如,"如果您的部分网络连接意外关闭怎么办?

9. 自动化您的缓解措施 (Automate your mitigations)

2023 年 3 月,几个数据中心的多台网络设备几乎同时发生故障,导致大面积数据包丢失。在这次为期 6 天的故障中,根据网络故障发生时的位置、服务负载和配置,估计有 70% 的服务受到了不同程度的影响。

在这种情况下,您可以通过自动采取缓解措施来缩短平均解决时间(MTTR)。如果有一个明确的信号表明某个故障正在发生,那么为什么不能自动启动缓解措施呢?有时,最好先使用自动缓解措施,而将根本原因留待避免对用户造成影响之后再处理。

10. 缩短两次发布之间的间隔时间,降低发布出错的可能性 (Reduce the time between rollouts, to decrease the likelihood of the rollout going wrong)

2022 年 3 月,支付系统发生大面积故障,客户无法完成交易,导致《口袋妖怪 GO》社区日被推迟。原因是删除了一个单一的数据库字段,由于事先已从代码中删除了该字段的所有用途,因此本应是安全的。不幸的是,由于系统的一部分发布速度较慢,这意味着实时系统仍在使用该字段。

由于发布之间的延迟时间较长,尤其是在复杂的多组件系统中,因此很难推段发布特定变更的安全性。频繁发布[9]--在适当测试的情况下--可减少此类故障的意外发生。

11. 单一的全局硬件版本就是单点故障 (A single global hardware version is a single point of failure)

只用一种特定型号的设备来执行关键功能可以简化操作和维护。然而,这意味着如果该型号出现问题,则不再执行该关键功能。

这种情况发生在 2020 年 3 月,当时一台存在未被发现的零日漏洞的网络设备遇到了触发该漏洞的流量模式变化。由于整个网络使用的是同一型号和版本的设备,因此出现了严重的区域性故障。幸亏有多条网络主干线,高优先级流量才得以通过仍可正常工作的替代设备进行传输,才避免了全面中断。

关键基础设施中的潜在漏洞可能潜伏未被发现,直到一个看似无害的事件触发它们。维护多样化的基础设施虽然会产生成本,但却意味着故障与完全故障之间的差别。

就是这样!从谷歌二十年的网站可靠性工程中汲取的 11 条经验。为什么是 11 条经验?嗯,你看,谷歌网站可靠性部门拥有悠久的历史,但仍处于鼎盛时期。

>>>>参考资料

  • [1] 不幸之轮 ("Wheel of Misfortune")
  • https://sre.google/sre-book/accelerating-sre-on-call/
  • [2] 服务最佳实践指南 ("Service Best Practices guides")
  • https://sre.google/sre-book/service-best-practices/
  • [3] 金丝雀所有变更 (canaried those global changes)
  • https://sre.google/workbook/canarying-releases/
  • [4] 在这里阅读有关金丝雀策略的更多信息
  • https://storage.googleapis.com/pub-tools-public-publication-data/pdf/24017e52c907294589604a29a86f158828eda078.pdf
  • [5] 在视频中了解更多信息
  • https://www.usenix.org/conference/srecon18europe/presentation/davidovic
  • [6] "通用缓解措施"
  • https://www.oreilly.com/content/generic-mitigations/
  • [7] 优雅降级 (graceful degradation)
  • [8] "经受住意外"
  • https://queue.acm.org/detail.cfm?id=2371516
  • [9] 频繁发布
  • https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance

作者丨Adrienne Walcer

编译丨公众号:东风微鸣技术博客(ID:EWhisperCN)



Tags:Google   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
机械设备B2B工厂外贸网站如何做Google谷歌SEO优化关键字排名?
在今天的全球化市场中,机械设备行业正面临着激烈的竞争。要在这一领域脱颖而出,拥有一个优化良好的B2B外贸网站至关重要。通过精准的谷歌SEO关键字排名,您的网站可以吸引更多海...【详细内容】
2024-04-08  Search: Google  点击:(4)  评论:(0)  加入收藏
Google搜索引擎索引的网页数量有多少?谷歌官方提供数据进行参考
Google搜索引擎索引的网页数量有多少?二十世纪九十年代,网页的索引数量成了一个各大搜索引擎相互对比的指标。小编记得2000年谷歌搜索引擎的首页搜索框上方,还标记着谷歌索引的...【详细内容】
2024-03-27  Search: Google  点击:(12)  评论:(0)  加入收藏
从Google Gemini到OpenAI Q*:生成式AI研究领域全面综述
新智元报道来源:专知【新智元导读】这项综述性研究报告批判性地分析了生成式AI的发展现状和发展方向,并探究了谷歌Gemini和备受期待的OpenAI Q*等创新成果将如何改变多个领域...【详细内容】
2024-01-09  Search: Google  点击:(161)  评论:(0)  加入收藏
Google Play谷歌开发者公司邓白氏编码办理流程
Google Play是谷歌公司推出的一款应用程序市场,为开发者提供了一个平台,让他们可以将自己的应用程序发布到全球用户手中。在Google Play上发布应用程序需要邓白氏编码(邓白氏编...【详细内容】
2023-12-20  Search: Google  点击:(69)  评论:(0)  加入收藏
Google收录的查询方法和收录
Google收录的查询方法不少。但,最简便的谷歌收录查询工具就是Google搜索本身,只需要输入一个查询指令,即可查看到Google对于网站的详细收录情况。site:example.com (example.co...【详细内容】
2023-12-20  Search: Google  点击:(114)  评论:(0)  加入收藏
Google发布最强文生图大模型Imagen 2
DoNews12月15日消息,近日,Google 推出其最先进的文生图大模型 Imagen 2,可提供与用户提示词紧密结合且一致的高质量、逼真的输出图像。Google 的增强模型 Imagen 2 是利用 Goog...【详细内容】
2023-12-15  Search: Google  点击:(53)  评论:(0)  加入收藏
谷歌站长工具(Google Search Console)最新使用教程
谷歌站长工具(Google Search Console)是一款网站效果监测工具,由谷歌官方免费提供,帮助用户查看和维护自己网站在Google搜索里的表现。通过这款站长工具,你可以详细了解Google是...【详细内容】
2023-12-11  Search: Google  点击:(156)  评论:(0)  加入收藏
Google SRE 二十年的经验教训
前言二十年可以发生很多事情,尤其是当你忙于发展的时候。二十年前,谷歌有一对小型数据中心,每个中心有几千台服务器,通过一对 2.4G 网络链路环形连接。我们使用 Python 脚本(如 "...【详细内容】
2023-12-11  Search: Google  点击:(43)  评论:(0)  加入收藏
谷歌站长工具Google Search Console:最新使用教程与功能详解
谷歌站长工具(Google Search Console)是一款网站效果监测工具,由谷歌官方免费提供,帮助用户查看和维护自己网站在Google搜索里的表现。通过这款站长工具,你可以详细了解Google是...【详细内容】
2023-12-11  Search: Google  点击:(59)  评论:(0)  加入收藏
Google Bard现在可以帮你总结YouTube视频内容了
凭借新的扩展,谷歌Bard已经能够理解视频内容并响应用户的查询请求。换言之,用户现在可以通过这款AI聊天机器人,快速了解自己关注的YouTube视频大致表达了哪些内容。谷歌在11月2...【详细内容】
2023-11-29  Search: Google  点击:(56)  评论:(0)  加入收藏
▌简易百科推荐
Web3如何颠覆传统互联网
随着科技的迅速发展,Web3正逐渐成为人们关注的焦点。与传统的Web2相比,Web3代表了一种全新的互联网模式,其潜力和影响力引发了人们对未来的期待和探索。本文将深入探讨Web3如何...【详细内容】
2024-03-29  清晨少少年    Tags:Web3   点击:(7)  评论:(0)  加入收藏
批量生产的俄罗斯美女,正在收割咱爸
南风窗消息,Olga Loiek是一名乌克兰网红,金发碧眼,面容精致,她的视频,多以芭比娃娃气质的造型做封面,内容形式相对单调——对着镜头,分享自己的生命感悟。作为一个名不见...【详细内容】
2024-03-22    上游新闻  Tags:俄罗斯美女   点击:(13)  评论:(0)  加入收藏
内容IP,流量生意之外的另一条道路
来源 | Tech星球文 | 陈桥辉腾讯视频一开年就出了王炸。作为一部在播出前,全网总预约数超过了800万的绝对大热剧,由赵丽颖、林更新主演的仙偶大剧《与凤行》在3月18日首播,开播...【详细内容】
2024-03-20  Tech星球    Tags:内容IP   点击:(14)  评论:(0)  加入收藏
YouTube 为包含 AI 生成内容的视频制定新准则
AI 正在迅速改变内容的制作方式。现在,AI 模型可以书写文字、生成图像、制作视频,甚至可以合成听起来令人震惊的真实声音。随着这种技术变得越来越容易获得,公司也开始努力解决...【详细内容】
2024-03-19  FydeOS    Tags:YouTube   点击:(17)  评论:(0)  加入收藏
数字生活的未来:探索Web3的全新世界
随着科技的飞速发展,我们正迈向一个数字化的未来。而在这个数字化的时代,Web3技术的崛起正引领着我们进入一个全新的世界。本文将深入探讨Web3技术的特点以及它给我们带来的全...【详细内容】
2024-03-14  清晨少少年    Tags:Web3   点击:(16)  评论:(0)  加入收藏
Web3:数字身份与隐私保护的新篇章
1. 数字身份验证的革新在传统互联网上,个人的数字身份通常由中心化的身份验证机构控制,存在安全性和隐私保护的风险。而在Web3中,基于区块链技术的去中心化身份验证方案正在兴...【详细内容】
2024-03-12  Rory罗昊    Tags:Web3   点击:(20)  评论:(0)  加入收藏
人民法院案例库正式上线并向社会开放
据央视新闻客户端2月27日消息:最高人民法院今天召开新闻发布会,宣布人民法院案例库正式上线并向社会开放。公众注册登录后就可以查阅,案例库将为公众提供什么样的服务,和中国裁...【详细内容】
2024-02-27    央视新闻  Tags:人民法院案例   点击:(21)  评论:(0)  加入收藏
直播七天七夜仅筹款15万,自救失败!天涯社区被申请破产审查,此前“二三十亿都没卖”
近日,天涯社区网络科技股份有限公司新增一则破产审查案件,经办法院为海南省海口市中级人民法院。终本案件显示,该公司未履行金额超1.1亿元,未履行比例超98%。2月27日,天涯社区官...【详细内容】
2024-02-27    每日经济新闻  Tags:天涯社区   点击:(22)  评论:(0)  加入收藏
塑造互联网未来的三大愿景
译者 | 布加迪审校 | 重楼互联网也许是人类创造的最伟大的现代技术,它仍在不断完善中。互联网发展的核心是三种不同的愿景。本文将探讨指导互联网技术和架构未来的三个概念:We...【详细内容】
2024-02-01    51CTO  Tags:互联网   点击:(42)  评论:(0)  加入收藏
免费下载的无版权视频素材网站有哪些?
免费下载的无版权视频素材网站有哪些?随着社交媒体和自媒体的兴起,视频素材的需求量越来越大。但是,很多人在寻找无版权、可免费下载的视频素材时却感到无从下手。本文将为大家...【详细内容】
2024-01-30    简易百科  Tags:素材网站   点击:(121)  评论:(0)  加入收藏
站内最新
站内热门
站内头条