# Google 如何针对行星级基础设施进行行星级工程设计?
> 原文: [http://highscalability.com/blog/2016/7/18/how-does-google-do-planet-scale-engineering-for-a-planet-sca.html](http://highscalability.com/blog/2016/7/18/how-does-google-do-planet-scale-engineering-for-a-planet-sca.html)
![](https://img.kancloud.cn/c3/a0/c3a008bd2a648e87e6dbc36a94331cd0_425x215.png)
Google 如何保持其所有服务正常运行? 他们似乎从来没有失败过。 如果您想知道我们在 [GCP NEXT 2016](https://cloudplatformonline.com/next2016-schedule.html) 上发表的演讲中的精彩幕后花絮, [Melissa Binde](https://www.linkedin.com/in/mbinde) ,Google Storage SRE 总监: [Google 如何针对行星级基础架构](https://www.youtube.com/watch?v=H4vMcD7zKM0)进行行星级工程。
梅利莎(Melissa)的讲话很简短,但充满智慧,而且以一种胡说八道的方式表达出来,使您认为服务是否失败梅利莎(Melissa)绝对是您想要的那种人。
哦,什么是 SRE? 它代表*站点可靠性工程*,但定义更难以理解。 就像您要求道的定义时得到的答案一样。 正如 Google 的本·斯洛斯(Ben Sloss)24x7 副总裁所明确指出的那样,这不仅仅是一个过程,更是一个过程,他将 SRE 定义为:
> 当软件工程师承担了过去称为操作的任务时会发生什么。
让它在您的头部反弹一会儿。
最重要的是,有一件事很清楚:SRE 是生产的保管人。 SRE 是 google.com 和 GCP 的客户体验的托管人。
对我来说,一些演讲重点:
* **点检正常运行时间的破坏性激励与功能**相比。 SRE 试图解决想要推送功能的开发人员与想要通过不推送功能来维持正常运行时间的系统管理员之间的天然紧张关系。
* **错误预算**。 这就是预期会失败的想法。 这不是一件坏事。 用户无法确定服务的运行时间是 100%还是 99.99%,因此您可能会出错。 这减少了开发人员和运营人员之间的紧张关系。 只要维持错误预算,您就可以推出新功能,而运营方也不会受到指责。
* **目标是立即恢复服务。 故障排除将在稍后进行。** 这意味着在恢复服务后,您需要大量日志记录和工具来进行调试。 由于某种原因,这使[较早的文章](http://highscalability.com/blog/2014/2/3/how-google-backs-up-the-internet-along-with-exabytes-of-othe.html)上的内容闪烁了起来,同样基于 Google SRE 的讲话:*备份无用。 这是您关心的*还原。
* **没有无聊的分页哲学**。 当页面进入时,应该是一个有趣的新问题。 您不希望无聊的 SRE 处理重复性问题。 这就是机器人的目的。
演讲中其他有趣的话题是:SRE 的组织结构如何? 如何聘请开发人员担任侧重于生产的角色并使他们满意? 我们如何保持团队在 Google 内部的价值? 我们如何帮助我们的团队更好地沟通并解决与数据而非断言或权力夺取的分歧?
让我们继续吧。 以下是 Google 如何针对行星级基础设施进行行星级工程...
## 保持平衡:点检正常运行时间的破坏性动机与功能
* 系统管理员会在站点正常运行时获得 Cookie 的正常运行时间。 当网站停滞不前时,我们会吸引访问者,访问者会给我们钱。
* 开发人员会获得功能的 Cookie。 发布一个新功能,访问者来了,他们给了我们钱。
* 生产冻结,也就是新功能的冻结,通常映射为增加正常运行时间。
* 开发人员和系统管理员之间存在天生的紧张关系。 开发人员会获得发布功能的 Cookie。 系统管理员会获取 Cookie 以确保正常运行时间。
* 因此,系统管理员因阻止新功能发布而获得奖励。 如果开发人员能够解决系统管理员的问题,他们将获得奖励。
* 开发人员进行他们所谓的 Beta 测试是为了尽快发布功能。
* 系统管理员执行他们所谓的启动审核,以减慢新功能。
* 您的团队将所有的时间都花在彼此抗争上,因此您会增加停机次数,风险,混乱和无政府状态。
* 您想要的是消除异想天开的命令。 请按规则处理,以便团队可以有目标并共同努力。
* 与 devops 一样,有一种方法可以使开发人员和操作人员一起工作。 问题是,devops 无论走到哪里都有不同的含义。 相反,SRE(站点可靠性工程)定义明确。
* **SRE:** **当您要求软件工程师设计和运行操作时会发生什么情况**-Ben Sloss 24x7 VP,Google
* 软件工程师-事实证明,当知道软件的人也运行服务时,服务可以更好地运行。 他们对什么使它打勾有深刻的理解。
* 设计和运行-实际上是设计您的生产环境,而不是让它成为意外的事故。
* 假设有 1000 个 SRE 在 Google 的基础架构上工作:网络,计算,存储等。有多少个 SRE 负责云计算?
* 所有。
* google.com 和 GCP(HTG1)的运行之间没有界限。 不需要让云团队和内部团队进行沟通的开销。 他们创造了一种环境,可以帮助所有人协同工作。
## 技能:SRE 是一个印章团队和圣职
* 本节的标题是我的描述。 具有技能的 SRE 必须是精英。 在工作方面,他们仅致力于这种几乎准神秘的事物,称为生产。
* SRE 必须比开发人员更熟练,才能完成相同的工作:
* 他们需要更大的技能范围。
* 所有 SRE 必须通过完整的软件开发人员面试才能被录用。
* 所有 SRE 必须通过一次非抽象的大型系统设计采访。
* SRE 必须具有相同的软件技能,这是不同的应用领域。
* 开发人员专心于产品经理并制作功能。
* SRE 依赖于生产,以使生产达到最佳状态。
* **当将面向开发和面向生产的观点结合在一起时,最终的设计会更强大**。
* 入职流程示例给出了 SRE 带来的一个示例,该过程在将团队的项目置于 SRE 的责任之下时发生。 在评估团队的软件时,他们发现:
* 当达到规模时,它将在生产中失败。
* 开发人员已隐式假定某种呼叫不会失败。
* 他们假设请求的分配是均匀的。
* 他们以为不会受到用户的关注。
* 他们假定所有请求的大小均处于平均水平。
* 他们在两条尾巴上失败了(没有给出解释)。
## 组织:为开发人员提供不让运营工作积聚的理由
* 该系统必须设计为不增加运营工作,因为如果开发人员不从事工作,他们将不会那么在意。
* **SRE** 的开发预算。 如果您的系统的运营开销很大,那么您获得的开发人员就不会那么多,那么您就无法推广那么多的功能。
* SRE 具有完全不同的命令链。 他们有自己的副总裁,与开发副总裁分开。 这赋予了他们权力和权力。 当生产意味着他们需要拒绝时,它允许他们说不。 一堆不是的传呼猴子。
* 当开发人员说他们可以捐赠人数时,SRE 不必接受。 SRE 可以说服务不够重要,请自己继续提供支持。
* SRE 是一种稀缺资源。 并非 Google 的每个团队都有 SRE。 云确实可以,但是不是每个其他团队,甚至不是云中的每个小服务,都只是重要的。
## 环境:如何使开发人员在生产团队中保持快乐?
* **至少有 50%的工作需要为项目工作**。 不待命。 不是门票。 不开会。 实际上是在做项目工作。
* 如果项目工作量过多,则开发人员会为 SRE 分配更多的人员,或者将额外的工作流转给开发人员团队。
* 什么是项目工作?
* 通过切换基础数据库技术来改善服务的延迟。
* 编写自动化以加速部署。
* 跨服务的项目。 Google 作为一项内部服务,可以由其他服务(通常由软件 bot)在内部进行查询,如果可以安全地将计算机停机,可以安全地将机架停机或者将数据中心安全地停机,则可以返回 Google ?
* SRE 是一支志愿军。 没有草稿。
* 您可以随时转入另一个 SRE 团队。
* 您可以随时转换为 dev。
* Mission Control 是一个程序,开发人员可以在其中试用 SRE 并查看他们是否喜欢它。
* 团队很流畅。 人们来自团队,分享经验,分享观点。
## 预算:您可以支出任意预算的错误预算
* 如果您有 3 个 9 的可用性,目标是不将其提高到 4 个 9,那么您的错误预算为.1%。
* **如果您想更快地推出功能并使 GCP 变得更好,那就去做吧。 直到用尽错误预算。**
* 如果您希望进行较差的测试,使软件定期出现故障并且必须不断回滚,那么您也可以选择该选项,但是错误预算很快就会用光,并且您将无法启动 。
* 错误预算按季度循环。
* 有一个逃生阀:三枚银子弹。
* 一个开发人员可以说我真的需要推动,请给我一个银弹。
* SRE 会说“ OK”,但您必须说服 VP 您实际需要推动。
* 这个仪式听起来很愚蠢,但功能非常强大。 它将控制权交给开发人员。 他们有 3 个灵丹妙药,由他们的副总裁来决定是否合适。
* 错误预算基于每个服务。 因此,如果多个开发团队使用相同的服务,则它们共享相同的预算。
* SRE 不在交战的开发团队中间。 他们必须弄清楚如何花费错误预算。
* 机外。 如果所有其他方法都失败了,并且开发人员和 SRE 确实不同意,则 SRE 可以派遣开发团队。
* 像和睦的离婚。
* 这是至关重要的逃生阀门,因此团队在很长一段时间内都不会出现令人讨厌的分歧。
* 很少见,但确实发生了。 一个示例场景是,如果团队不想在其 ACID 类型项目中使用 Spanner,如果开发团队说他们想建立自己的团队,那么 SRE 团队可以说他们不想为团队提供支持。 去建立自己的数据库,因为这对生产不利。
* SRE 是 google.com 和 GCP 的生产托管人,SRE 是客户体验的托管人。
## SRE 支持在频谱上
* 聊天和咨询。 与开发人员聊天。 进行白板会议。
* 协同设计。 与开发人员一起创建设计。
* 完全所有权。 完全拥有的服务。 所有容量,所有供应,所有页面。
* 页面是保持诚实的一种方式。 它们不是 SRE 的目的。
* 负责制作的人应该抓这些页面,因为这样可以使他们的皮肤保持游戏中的外观。
* 它还有助于使 SRE 的技能,专长和观点保持最新。
## 是什么让事情顺利进行? 文化和过程
* Google 会进行常规的培训和通话阴影处理。
* Google 也有一个名为:**不幸轮盘**的过程-卷轴游戏。
* 一个人是地牢大师,他们有一个受害者,团队轮流尝试猜测发生了什么。
* Google 运行非常复杂的系统。 除了进行培训的人之外,很少有人真正知道发生了什么以及答案是什么。
* 这对新的来电者很有用。 让他们在受控环境中进行测试。
* 一些团队在某些场景中会破坏生产并让新手对其进行修复。
* 对退伍军人也有好处。 最好重新整理您的知识,尤其是在使用非常复杂的系统时。
## 事件管理
* 场景:您正在呼叫 gmail,并且您获得了一张票证,用户可以看到其他用户的电子邮件。 你是做什么? 关闭 gmail。
* **Oncallers 被完全授权采取一切措施来保护用户,保护信息,保护 Google。** 如果这意味着要关闭 gmail 甚至关闭所有 google.com,那么作为 SRE,您的副总裁将为您提供支持,而您的 SVP 将为保护 Google 提供支持。
* **目标是立即恢复服务。 故障排除将在稍后进行。**
* 有二进制状态的记录。 有日志。
* 醒着,开发人员在办公室,所有人都在时,请进行故障排除。 目的是使服务重新启动并运行。
## 你该怪谁?
* 当“新开发者”推送代码并破坏 google.com 达三个小时时,您应该对谁负责? a)新开发者 b)代码审查。 c)缺乏测试(或被忽略)的测试。 d)缺乏针对代码的适当的金丝雀程序。 e)缺乏快速回滚工具。
* 除了新开发者以外的所有东西。 **如果新开发人员编写的代码会导致该网站瘫痪,那不是开发人员的错。 这是开发人员和工作人员之间所有关口的错。**
* **绝对不允许人为错误传播到人外。** 查看允许部署损坏的代码的过程。
## 无罪的岗位形态
* 避免责备文化至关重要。
* 研究表明,大多数事件是人为错误引起的。
* **最好通过了解实际发生的事件来解决事件。** 不知道发生了什么的最好方法? 通过寻找责任人来揭开每一个事件。
* 人们真的很擅长隐藏,并确保没有线索,并确保您实际上不知道发生了什么。 试图怪罪只会使您的工作更加困难。
* 在 Google 谁搞砸了谁写的事后验尸。 这样可以避免命名和遮挡。 使他们有能力纠正错误。 促成失败的每个人都应尽可能诚实地参与进来,并写下您如何陷入困境。
* 已在全体会议上给予拆除该站点的奖金,因为他们立即拥有该站点,因此他们拥有了该站点。 他们上了 IRC,并将其回滚。 他们说出来并如此迅速地照顾好他们,便获得了奖金。
* 无赖并不意味着没有名称和细节。 这意味着我们不会因为事情出错的原因而选择别人。 不应发生诸如断电之类的事情,应予以解雇。
* 深度防御
* 由于策略是纵深防御,因此事后评估模板将操作分为预防,检测和缓解措施。
* **我们希望防止中断,我们希望更快地检测到它们,并希望减轻影响。**
* 如果类似的情况再次发生,它将不会传播到很远,持续太久或影响那么多的客户。
## 分页的无聊哲学
* 团队喜欢看什么样的页面? 新的和有趣的。
* 您知道如何解决的页面很无聊。 您应该创建一个机器人来解决该问题。
* Google 发明了许多机器人。 他们不喜欢无聊。
* 如果您可以写下修复它的步骤,那么您可能可以编写自动化来修复它。
* 不要做机器人可以为您做的事情。
* 构建漫游器的结果是,理想情况下,每个页面都是全新的,因此不会感到无聊。 甚至经验丰富的工程师也可能在每次寻呼机关闭时都看到一些新内容。
* **这是哲学的根本变化。 如果一切正常,重复的事件很少,则意味着您在调试系统时不会像以前那样沉迷于此。**
## 需要更强大的调试工具
* **如果所有问题都是新问题,则意味着您需要更强大的调试工具来查找问题。**
* 文本日志不是调试工具。 如果您不知道要查找的内容,则无法在日志文件中查找模式的标准调试无法进行。 使用 GCP 大小的平台,您需要浏览多少个外观才能找到失败的外观?
* Google 严重依赖于各种可视化工具来解决不熟悉的问题并尽快恢复服务。
* 绘图工具:石墨,InfluxDB + Grafana,OpenTSDB。
* 这些和其他提到的工具不是 Google 使用的工具,因此不建议使用,但它们是有用工具的开放源代码示例。
* 很高兴看到正在发生的一切。 Google 拥有数十亿亿个流程,因此您需要汇总视图才能理解事物。
* **Google 在其二进制文件中放置了很多工具。** 在新情况下,您并不总是知道您要寻找的东西。
* 创建一个框架,使开发人员可以轻松地插入监视框架。
* 大量存储空间专门用于存储监视数据。
* **的想法是,您不想在中断期间进行故障排除。 中断仅与恢复服务有关。**
* 故障排除是您稍后醒来时要执行的操作。 开发人员经常参与故障排除过程,因为他们对系统有更深入的了解。
* 历史数据必须可用,以便故障恢复后可以进行故障排除。 恢复不会导致中断监视数据丢失。
* 这种方法可以使停机时间尽可能短,同时可以在以后解决问题。
* 事件绘图-对于关联事件非常有用。
* 充分利用人类的模式匹配能力,很难编写机器人来做到这一点。
* 给出了一个图表示例,其中每行是一个数据中心,列是时间,单元格中的颜色是事件类型。
* 这可以帮助您找到不是单个事件的模式,例如导致级联故障的软件推出,或者一起重复出现的错误簇,或者如果您看到延迟尖峰之后立即出现错误尖峰 重复一遍。 这些都将有助于确定问题的根本原因。
* 可视化过程跟踪-有时您需要深入到过程级别以识别性能问题。
* 开源选项不多:Performance Co-Pilot + vector。
* Google 有一个非常复杂的框架,可将示例查询拉入存储并提供完整的跟踪记录。
* 可视化工具的优点是很难理解时间戳。 可视化工具使您可以更轻松地折叠,展开和比较事件。
* 网络流量和容量
* 开源选项:仙人掌,天文台和 Nagios
* 事实证明,很多存储缓慢的问题实际上是网络问题。
* 如果您正在查看存储系统,但无法弄清为什么它对网络的访问速度很慢。
* 您需要一个工具来快速查看网络状态。 哪些链接超载? 您看到多少个包错误? 链接断开了吗?
* 日志文件-当所有其他失败时
* 开源:ElasticSearch + Logstash(+ Kibana)
* 您不想遍历日志文件。 您需要一个具有更多类似查询的 SQL 的系统,以便您可以挖掘日志。
* 日志应易于使用且易于理解。
## Stackdriver 错误报告
* 如果您想看看 SRE 所拥有的那种工具的例子,那么请看 [Google Stackdriver 错误报告](https://cloud.google.com/error-reporting/) 。
* 这是他们能够用于服务的内部工具。
* 通过分析堆栈跟踪将分组错误并进行重复数据删除
* 系统了解所使用的通用框架并相应地对错误进行分组。
* 该计划将做更多。 Google 内部拥有广泛的工具,他们希望向云客户提供这些工具。
## 相关文章 [
* [在 HackerNews](https://news.ycombinator.com/item?id=12116121) 上/ [在 Reddit](https://www.reddit.com/r/programming/comments/4tg31p/how_does_google_do_planetscale_engineering_for_a/) 上
* 图书:[网站可靠性工程:Google 如何运行生产系统](https://www.amazon.com/Site-Reliability-Engineering-Production-Systems-ebook/dp/B01DCPXKZ6)。 它是由从事实际 SRE 工作的实际 Google SRE 编写的,是作者 500 年综合经验的结果。
* [大规模计算,或者说 Google 如何扭曲我的大脑](http://matt-welsh.blogspot.com/2010/10/computing-at-scale-or-how-google-has.html)
* [网站可靠性工程师-使 Google 保持 24/7 全天候运行](http://transcriptvids.com/v2/yXI7r0_J29M.html)
* [服务水平和错误预算](https://www.usenix.org/conference/srecon16/program/presentation/jones)
* [SREcon](https://www.usenix.org/conference/srecon16) 。 会议视频[可用](https://www.usenix.org/conference/srecon16/program)。 看起来内容很多。
* [小组:谁/什么是 SRE?](https://www.usenix.org/conference/srecon16/program/presentation/definition-of-sre-panel)
* [策略:规划停电的 Google 样式](http://highscalability.com/blog/2010/3/5/strategy-planning-for-a-power-outage-google-style.html)
* [Google 如何备份互联网以及 EB 级其他数据](http://highscalability.com/blog/2014/2/3/how-google-backs-up-the-internet-along-with-exabytes-of-othe.html)
* [什么是“网站可靠性工程”?](https://landing.google.com/sre/interview/ben-treynor.html)
* [成为 Google 的网站可靠性工程师(SRE)感觉如何?](https://www.quora.com/What-is-it-like-to-be-a-Site-Reliability-Engineer-SRE-at-Google)
* [我的警惕](https://docs.google.com/document/d/199PqyG3UsyXlwieHaqbGiWVa8eMWi8zzAn0YfcApr8Q/preview#)的哲学,作者:Rob Ewaschuk,Google SRE
* [这是 Google 确保(几乎)永不衰败的方式](http://www.wired.com/2016/04/google-ensures-services-almost-never-go/)
FWIW,Stack Driver 并不是他们能够用于服务的内部工具; 这是 Google 购买的 SaaS 创业公司。
https://techcrunch.com/2014/05/07/google-acquires-cloud-monitoring-service-stackdriver/
- LiveJournal 体系结构
- mixi.jp 体系结构
- 友谊建筑
- FeedBurner 体系结构
- GoogleTalk 架构
- ThemBid 架构
- 使用 Amazon 服务以 100 美元的价格构建无限可扩展的基础架构
- TypePad 建筑
- 维基媒体架构
- Joost 网络架构
- 亚马逊建筑
- Fotolog 扩展成功的秘诀
- 普恩斯的教训-早期
- 论文:Wikipedia 的站点内部,配置,代码示例和管理问题
- 扩大早期创业规模
- Feedblendr 架构-使用 EC2 进行扩展
- Slashdot Architecture-互联网的老人如何学会扩展
- Flickr 架构
- Tailrank 架构-了解如何在整个徽标范围内跟踪模因
- Ruby on Rails 如何在 550k 网页浏览中幸存
- Mailinator 架构
- Rackspace 现在如何使用 MapReduce 和 Hadoop 查询 TB 的数据
- Yandex 架构
- YouTube 架构
- Skype 计划 PostgreSQL 扩展到 10 亿用户
- 易趣建筑
- FaceStat 的祸根与智慧赢得了胜利
- Flickr 的联合会:每天进行数十亿次查询
- EVE 在线架构
- Notify.me 体系结构-同步性
- Google 架构
- 第二人生架构-网格
- MySpace 体系结构
- 扩展 Digg 和其他 Web 应用程序
- Digg 建筑
- 在 Amazon EC2 中部署大规模基础架构的六个经验教训
- Wolfram | Alpha 建筑
- 为什么 Facebook,Digg 和 Twitter 很难扩展?
- 全球范围扩展的 10 个 eBay 秘密
- BuddyPoke 如何使用 Google App Engine 在 Facebook 上扩展
- 《 FarmVille》如何扩展以每月收获 7500 万玩家
- Twitter 计划分析 1000 亿条推文
- MySpace 如何与 100 万个并发用户一起测试其实时站点
- FarmVille 如何扩展-后续
- Justin.tv 的实时视频广播架构
- 策略:缓存 404 在服务器时间上节省了洋葱 66%
- Poppen.de 建筑
- MocoSpace Architecture-一个月有 30 亿个移动页面浏览量
- Sify.com 体系结构-每秒 3900 个请求的门户
- 每月将 Reddit 打造为 2.7 亿页面浏览量时汲取的 7 个教训
- Playfish 的社交游戏架构-每月有 5000 万用户并且不断增长
- 扩展 BBC iPlayer 的 6 种策略
- Facebook 的新实时消息系统:HBase 每月可存储 135 亿条消息
- Pinboard.in Architecture-付费玩以保持系统小巧
- BankSimple 迷你架构-使用下一代工具链
- Riak 的 Bitcask-用于快速键/值数据的日志结构哈希表
- Mollom 体系结构-每秒以 100 个请求杀死超过 3.73 亿个垃圾邮件
- Wordnik-MongoDB 和 Scala 上每天有 1000 万个 API 请求
- Node.js 成为堆栈的一部分了吗? SimpleGeo 说是的。
- 堆栈溢出体系结构更新-现在每月有 9500 万页面浏览量
- Medialets 体系结构-击败艰巨的移动设备数据
- Facebook 的新实时分析系统:HBase 每天处理 200 亿个事件
- Microsoft Stack 是否杀死了 MySpace?
- Viddler Architecture-每天嵌入 700 万个和 1500 Req / Sec 高峰
- Facebook:用于扩展数十亿条消息的示例规范架构
- Evernote Architecture-每天有 900 万用户和 1.5 亿个请求
- TripAdvisor 的短
- TripAdvisor 架构-4,000 万访客,200M 动态页面浏览,30TB 数据
- ATMCash 利用虚拟化实现安全性-不变性和还原
- Google+是使用您也可以使用的工具构建的:闭包,Java Servlet,JavaScript,BigTable,Colossus,快速周转
- 新的文物建筑-每天收集 20 亿多个指标
- Peecho Architecture-鞋带上的可扩展性
- 标记式架构-扩展到 1 亿用户,1000 台服务器和 50 亿个页面视图
- 论文:Akamai 网络-70 个国家/地区的 61,000 台服务器,1,000 个网络
- 策略:在 S3 或 GitHub 上运行可扩展,可用且廉价的静态站点
- Pud 是反堆栈-Windows,CFML,Dropbox,Xeround,JungleDisk,ELB
- 用于扩展 Turntable.fm 和 Labmeeting 的数百万用户的 17 种技术
- StackExchange 体系结构更新-平稳运行,Amazon 4x 更昂贵
- DataSift 体系结构:每秒进行 120,000 条推文的实时数据挖掘
- Instagram 架构:1400 万用户,1 TB 的照片,数百个实例,数十种技术
- PlentyOfFish 更新-每月 60 亿次浏览量和 320 亿张图片
- Etsy Saga:从筒仓到开心到一个月的浏览量达到数十亿
- 数据范围项目-6PB 存储,500GBytes / sec 顺序 IO,20M IOPS,130TFlops
- 99designs 的设计-数以千万计的综合浏览量
- Tumblr Architecture-150 亿页面浏览量一个月,比 Twitter 更难扩展
- Berkeley DB 体系结构-NoSQL 很酷之前的 NoSQL
- Pixable Architecture-每天对 2000 万张照片进行爬网,分析和排名
- LinkedIn:使用 Databus 创建低延迟更改数据捕获系统
- 在 30 分钟内进行 7 年的 YouTube 可扩展性课程
- YouPorn-每天定位 2 亿次观看
- Instagram 架构更新:Instagram 有何新功能?
- 搜索技术剖析:blekko 的 NoSQL 数据库
- Pinterest 体系结构更新-1800 万访问者,增长 10 倍,拥有 12 名员工,410 TB 数据
- 搜索技术剖析:使用组合器爬行
- iDoneThis-从头开始扩展基于电子邮件的应用程序
- StubHub 体系结构:全球最大的票务市场背后的惊人复杂性
- FictionPress:在网络上发布 600 万本小说
- Cinchcast 体系结构-每天产生 1,500 小时的音频
- 棱柱架构-使用社交网络上的机器学习来弄清您应该在网络上阅读的内容
- 棱镜更新:基于文档和用户的机器学习
- Zoosk-实时通信背后的工程
- WordPress.com 使用 NGINX 服务 70,000 req / sec 和超过 15 Gbit / sec 的流量
- 史诗般的 TripAdvisor 更新:为什么不在云上运行? 盛大的实验
- UltraDNS 如何处理数十万个区域和数千万条记录
- 更简单,更便宜,更快:Playtomic 从.NET 迁移到 Node 和 Heroku
- Spanner-关于程序员使用 NoSQL 规模的 SQL 语义构建应用程序
- BigData 使用 Erlang,C 和 Lisp 对抗移动数据海啸
- 分析数十亿笔信用卡交易并在云中提供低延迟的见解
- MongoDB 和 GridFS 用于内部和内部数据中心数据复制
- 每天处理 1 亿个像素-少量竞争会导致大规模问题
- DuckDuckGo 体系结构-每天进行 100 万次深度搜索并不断增长
- SongPop 在 GAE 上可扩展至 100 万活跃用户,表明 PaaS 未通过
- Iron.io 从 Ruby 迁移到 Go:减少了 28 台服务器并避免了巨大的 Clusterf ** ks
- 可汗学院支票簿每月在 GAE 上扩展至 600 万用户
- 在破坏之前先检查自己-鳄梨的建筑演进的 5 个早期阶段
- 缩放 Pinterest-两年内每月从 0 到十亿的页面浏览量
- Facebook 的网络秘密
- 神话:埃里克·布鲁尔(Eric Brewer)谈银行为什么不是碱-可用性就是收入
- 一千万个并发连接的秘密-内核是问题,而不是解决方案
- GOV.UK-不是你父亲的书库
- 缩放邮箱-在 6 周内从 0 到 100 万用户,每天 1 亿条消息
- 在 Yelp 上利用云计算-每月访问量为 1.02 亿,评论量为 3900 万
- 每台服务器将 PHP 扩展到 30,000 个并发用户的 5 条 Rockin'Tips
- Twitter 的架构用于在 5 秒内处理 1.5 亿活跃用户,300K QPS,22 MB / S Firehose 以及发送推文
- Salesforce Architecture-他们每天如何处理 13 亿笔交易
- 扩大流量的设计决策
- ESPN 的架构规模-每秒以 100,000 Duh Nuh Nuhs 运行
- 如何制作无限可扩展的关系数据库管理系统(RDBMS)
- Bazaarvoice 的架构每月发展到 500M 唯一用户
- HipChat 如何使用 ElasticSearch 和 Redis 存储和索引数十亿条消息
- NYTimes 架构:无头,无主控,无单点故障
- 接下来的大型声音如何使用 Hadoop 数据版本控制系统跟踪万亿首歌曲的播放,喜欢和更多内容
- Google 如何备份 Internet 和数十亿字节的其他数据
- 从 HackerEarth 用 Apache 扩展 Python 和 Django 的 13 个简单技巧
- AOL.com 体系结构如何发展到 99.999%的可用性,每天 800 万的访问者和每秒 200,000 个请求
- Facebook 以 190 亿美元的价格收购了 WhatsApp 体系结构
- 使用 AWS,Scala,Akka,Play,MongoDB 和 Elasticsearch 构建社交音乐服务
- 大,小,热还是冷-条带,Tapad,Etsy 和 Square 的健壮数据管道示例
- WhatsApp 如何每秒吸引近 5 亿用户,11,000 内核和 7,000 万条消息
- Disqus 如何以每秒 165K 的消息和小于 0.2 秒的延迟进行实时处理
- 关于 Disqus 的更新:它仍然是实时的,但是 Go 摧毁了 Python
- 关于 Wayback 机器如何在银河系中存储比明星更多的页面的简短说明
- 在 PagerDuty 迁移到 EC2 中的 XtraDB 群集
- 扩展世界杯-Gambify 如何与 2 人组成的团队一起运行大型移动投注应用程序
- 一点点:建立一个可处理每月 60 亿次点击的分布式系统的经验教训
- StackOverflow 更新:一个月有 5.6 亿次网页浏览,25 台服务器,而这一切都与性能有关
- Tumblr:哈希处理每秒 23,000 个博客请求的方式
- 使用 HAProxy,PHP,Redis 和 MySQL 处理 10 亿个请求的简便方法来构建成长型启动架构
- MixRadio 体系结构-兼顾各种服务
- Twitter 如何使用 Redis 进行扩展-105TB RAM,39MM QPS,10,000 多个实例
- 正确处理事情:通过即时重放查看集中式系统与分散式系统
- Instagram 提高了其应用程序的性能。 这是如何做。
- Clay.io 如何使用 AWS,Docker,HAProxy 和 Lots 建立其 10 倍架构
- 英雄联盟如何将聊天扩大到 7000 万玩家-需要很多小兵。
- Wix 的 Nifty Architecture 技巧-大规模构建发布平台
- Aeron:我们真的需要另一个消息传递系统吗?
- 机器:惠普基于忆阻器的新型数据中心规模计算机-一切仍在变化
- AWS 的惊人规模及其对云的未来意味着什么
- Vinted 体系结构:每天部署数百次,以保持繁忙的门户稳定
- 将 Kim Kardashian 扩展到 1 亿个页面
- HappyPancake:建立简单可扩展基金会的回顾
- 阿尔及利亚分布式搜索网络的体系结构
- AppLovin:通过每天处理 300 亿个请求向全球移动消费者进行营销
- Swiftype 如何以及为何从 EC2 迁移到真实硬件
- 我们如何扩展 VividCortex 的后端系统
- Appknox 架构-从 AWS 切换到 Google Cloud
- 阿尔及利亚通往全球 API 的愤怒之路
- 阿尔及利亚通往全球 API 步骤的愤怒之路第 2 部分
- 为社交产品设计后端
- 阿尔及利亚通往全球 API 第 3 部分的愤怒之路
- Google 如何创造只有他们才能创造的惊人的数据中心网络
- Autodesk 如何在 Mesos 上实施可扩展事件
- 构建全球分布式,关键任务应用程序:Trenches 部分的经验教训 1
- 构建全球分布式,关键任务应用程序:Trenches 第 2 部分的经验教训
- 需要物联网吗? 这是美国一家主要公用事业公司从 550 万米以上收集电力数据的方式
- Uber 如何扩展其实时市场平台
- 优步变得非常规:使用司机电话作为备份数据中心
- 在不到五分钟的时间里,Facebook 如何告诉您的朋友您在灾难中很安全
- Zappos 的网站与 Amazon 集成后冻结了两年
- 为在现代时代构建可扩展的有状态服务提供依据
- 细分:使用 Docker,ECS 和 Terraform 重建基础架构
- 十年 IT 失败的五个教训
- Shopify 如何扩展以处理来自 Kanye West 和 Superbowl 的 Flash 销售
- 整个 Netflix 堆栈的 360 度视图
- Wistia 如何每小时处理数百万个请求并处理丰富的视频分析
- Google 和 eBay 关于构建微服务生态系统的深刻教训
- 无服务器启动-服务器崩溃!
- 在 Amazon AWS 上扩展至 1100 万以上用户的入门指南
- 为 David Guetta 建立无限可扩展的在线录制活动
- Tinder:最大的推荐引擎之一如何决定您接下来会看到谁?
- 如何使用微服务建立财产管理系统集成
- Egnyte 体系结构:构建和扩展多 PB 分布式系统的经验教训
- Zapier 如何自动化数十亿个工作流自动化任务的旅程
- Jeff Dean 在 Google 进行大规模深度学习
- 如今 Etsy 的架构是什么样的?
- 我们如何在 Mail.Ru Cloud 中实现视频播放器
- Twitter 如何每秒处理 3,000 张图像
- 每天可处理数百万个请求的图像优化技术
- Facebook 如何向 80 万同时观看者直播
- Google 如何针对行星级基础设施进行行星级工程设计?
- 为 Mail.Ru Group 的电子邮件服务实施反垃圾邮件的猫捉老鼠的故事,以及 Tarantool 与此相关的内容
- The Dollar Shave Club Architecture Unilever 以 10 亿美元的价格被收购
- Uber 如何使用 Mesos 和 Cassandra 跨多个数据中心每秒管理一百万个写入
- 从将 Uber 扩展到 2000 名工程师,1000 个服务和 8000 个 Git 存储库获得的经验教训
- QuickBooks 平台
- 美国大选期间城市飞艇如何扩展到 25 亿个通知
- Probot 的体系结构-我的 Slack 和 Messenger Bot 用于回答问题
- AdStage 从 Heroku 迁移到 AWS
- 为何将 Morningstar 迁移到云端:降低 97%的成本
- ButterCMS 体系结构:关键任务 API 每月可处理数百万个请求
- Netflix:按下 Play 会发生什么?
- ipdata 如何以每月 150 美元的价格为来自 10 个无限扩展的全球端点的 2500 万个 API 调用提供服务
- 每天为 1000 亿个事件赋予意义-Teads 的 Analytics(分析)管道
- Auth0 体系结构:在多个云提供商和地区中运行
- 从裸机到 Kubernetes
- Egnyte Architecture:构建和扩展多 PB 内容平台的经验教训
- 缩放原理
- TripleLift 如何建立 Adtech 数据管道每天处理数十亿个事件
- Tinder:最大的推荐引擎之一如何决定您接下来会看到谁?
- 如何使用微服务建立财产管理系统集成
- Egnyte 体系结构:构建和扩展多 PB 分布式系统的经验教训
- Zapier 如何自动化数十亿个工作流自动化任务的旅程
- Jeff Dean 在 Google 进行大规模深度学习
- 如今 Etsy 的架构是什么样的?
- 我们如何在 Mail.Ru Cloud 中实现视频播放器
- Twitter 如何每秒处理 3,000 张图像
- 每天可处理数百万个请求的图像优化技术
- Facebook 如何向 80 万同时观看者直播
- Google 如何针对行星级基础设施进行行星级工程设计?
- 为 Mail.Ru Group 的电子邮件服务实施反垃圾邮件的猫捉老鼠的故事,以及 Tarantool 与此相关的内容
- The Dollar Shave Club Architecture Unilever 以 10 亿美元的价格被收购
- Uber 如何使用 Mesos 和 Cassandra 跨多个数据中心每秒管理一百万个写入
- 从将 Uber 扩展到 2000 名工程师,1000 个服务和 8000 个 Git 存储库获得的经验教训
- QuickBooks 平台
- 美国大选期间城市飞艇如何扩展到 25 亿条通知
- Probot 的体系结构-我的 Slack 和 Messenger Bot 用于回答问题
- AdStage 从 Heroku 迁移到 AWS
- 为何将 Morningstar 迁移到云端:降低 97%的成本
- ButterCMS 体系结构:关键任务 API 每月可处理数百万个请求
- Netflix:按下 Play 会发生什么?
- ipdata 如何以每月 150 美元的价格为来自 10 个无限扩展的全球端点的 2500 万个 API 调用提供服务
- 每天为 1000 亿个事件赋予意义-Teads 的 Analytics(分析)管道
- Auth0 体系结构:在多个云提供商和地区中运行
- 从裸机到 Kubernetes
- Egnyte Architecture:构建和扩展多 PB 内容平台的经验教训