# YouTube 架构
> 原文: [http://highscalability.com/blog/2008/3/12/youtube-architecture.html](http://highscalability.com/blog/2008/3/12/youtube-architecture.html)
**更新 3:** [在 30 分钟内进行 7 年的 YouTube 可扩展性课程](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html)和 [YouTube 策略:添加抖动不是一个错误](http://highscalability.com/blog/2012/4/17/youtube-strategy-adding-jitter-isnt-a-bug.html)
[](http://highscalability.com/blog/2012/4/17/youtube-strategy-adding-jitter-isnt-a-bug.html)**更新 2:** [YouTube 每天达到 10 亿观看](http://mashable.com/2009/10/09/youtube-billion-views/)。 *即每秒至少 11574 次观看,每分钟 694444 次观看和每小时 41666666667 次观看。*
**更新:** [YouTube:平台](http://www.techcrunch.com/2008/03/12/youtube-the-platform/)。 YouTube 添加了一组丰富的新 API,以免费成为您的视频平台领导者。 在您自己的网站上上传,编辑,观看,搜索和评论视频,而无需访问 YouTube。 通过 API 在内部组成您的网站,因为无论如何以后您都需要公开它们。
YouTube 的增长速度非常快,每天的视频观看次数超过 1 亿,只有少数人负责网站的扩展。 他们如何设法将所有视频交付给所有这些用户? 自从 Google 收购以来,它们又如何发展?
## 信息来源
1. [Google 视频](https://www.youtube.com/watch?v=w5WVu624fY8)
## 平台
1. 阿帕奇
2. 蟒蛇
3. Linux(SuSe)
4. 的 MySQL
5. psyco,动态 python- > C 编译器
6. 用于视频而不是 Apache 的 lighttpd
## 里面有什么?
### 统计资料
1. 支持每天交付超过 1 亿个视频。
2. 成立于 2/2005
3. 3/2006 每天 3000 万次视频观看
4. 7/2006 每天有 1 亿次视频观看
5. 2 位系统管理员,2 位可扩展软件架构师
6. 2 位功能开发人员,2 位网络工程师,1 位 DBA
### 处理快速增长的配方
`while (true)
{
identify_and_fix_bottlenecks();
drink();
sleep();
notice_new_bottleneck();
}`
该循环每天运行多次。
### 网络服务器
1. NetScalar 用于负载平衡和缓存静态内容。
2. 使用 mod_fast_cgi 运行 Apache。
3. 请求被路由以由 Python 应用服务器处理。
4. 应用服务器与各种数据库和其他信息源进行对话,以获取所有数据并格式化 html 页面。
5. 通常可以通过添加更多计算机来扩展 Web 层。
6. Python Web 代码通常不是瓶颈,它大部分时间都花在了 RPC 上。
7. Python 允许快速灵活的开发和部署。 考虑到他们面临的竞争,这至关重要。
8. 通常少于 100 毫秒的页面服务时间。
9. 使用 psyco,这是一种动态 python- > C 编译器,它使用 JIT 编译器方法来优化内部循环。
10. 对于诸如加密之类的占用大量 CPU 资源的活动,它们使用 C 扩展名。
11. 一些预生成的缓存 HTML,用于渲染块很昂贵。
12. 数据库中的行级缓存。
13. 完整格式的 Python 对象将被缓存。
14. 计算一些数据并将其发送到每个应用程序,以便将这些值缓存在本地内存中。 这是一个未被充分利用的策略。 最快的缓存位于您的应用程序服务器中,不需要花费很多时间就可以将预先计算的数据发送到所有服务器。 只需要一个代理来监视更改,预先计算和发送即可。
### 影片投放
* 成本包括带宽,硬件和功耗。* 每个视频由一个迷你集群托管。 每个视频由一台以上的机器提供。* 使用群集意味着:
-提供内容的更多磁盘意味着更高的速度。
-净空。 如果机器故障,其他人可以接管。
-有在线备份。* 服务器将 lighttpd Web 服务器用于视频:
-Apache 的开销太大。
-使用 epoll 等待多个 fds。
-从单进程配置切换到多进程配置以处理更多连接。* 最受欢迎的内容已移至 CDN(内容交付网络):
-CDN 在多个位置复制内容。 更有可能使内容更接近用户,跳数更少,并且内容将在更友好的网络上运行。
-CDN 机器主要用于内存不足,因为内容是如此受欢迎,几乎没有内容在内存中跳动的情况。* 不太受欢迎的内容(每天 1-20 次观看)在各种 colo 网站中使用 YouTube 服务器。
-有长尾巴效果。 视频可能有一些播放,但是正在播放很多视频。 正在访问随机磁盘块。
-在这种情况下,缓存没有太大的用处,因此花钱购买更多的缓存可能没有意义。 这是非常有趣的一点。 如果您的产品尾部很长,那么缓存并不总是您的性能救星。
-调整 RAID 控制器,并注意其他较低级别的问题以提供帮助。
-调整每台机器上的内存,所以不要太多也不要太少。
### 提供视频关键点
1. 保持简单和便宜。
2. 保持简单的网络路径。 内容和用户之间没有太多设备。 路由器,交换机和其他设备可能无法承受如此多的负载。
3. 使用商品硬件。 硬件越昂贵,其他所有东西(支持合同)也就越昂贵。 您也不太可能在网上找到帮助。
4. 使用简单的通用工具。 他们使用大多数内置在 Linux 中的工具,并在这些工具之上。
5. 处理随机寻优(SATA,调整)。
### 服务缩图
* 出人意料的是,很难高效地进行。* 每个视频都有大约 4 个缩略图,因此缩略图比视频要多得多。* 缩略图仅托管在几台计算机上。* 看到了与服务许多小对象相关的问题:
-大量磁盘搜索以及操作系统级别的 inode 高速缓存和页面高速缓存出现问题。
-进入每个目录文件的限制。 特别是 Ext3。 转移到更分层的结构。 2.6 内核的最新改进可以将 Ext3 大目录处理提高到[的 100 倍](http://ext2.sourceforge.net/2005-ols/paper-html/node3.html),但是在文件系统中存储大量文件仍然不是一个好主意。
-大量请求/秒,因为网页可以在页面上显示 60 个缩略图。
-在如此高的负载下,Apache 的表现很差。
-在 Apache 前面使用过的鱿鱼(反向代理)。 这工作了一段时间,但是随着负载的增加,性能最终下降了。 从 300 请求/秒增加到 20。
-使用 lighttpd 尝试过,但是只有一个线程使它停顿了。 在多进程模式下会遇到问题,因为它们每个都会保留一个单独的缓存。
-设置了如此多的图像后,一台新机器花费了 24 小时。
-重新启动计算机需要 6 到 10 个小时才能将缓存预热,以使其不进入磁盘。* 为了解决他们所有的问题,他们开始使用 Google 的 BigTable(分布式数据存储):
-避免小文件问题,因为它将文件聚集在一起。
-快速,容错。 假定它在不可靠的网络上工作。
-较低的延迟,因为它使用了分布式多级缓存。 此缓存可在不同的并置站点上工作。
-有关 BigTable 的更多信息,请查看 [Google 架构](http://highscalability.com/google-architecture), [GoogleTalk 架构](http://highscalability.com/googletalk-architecture)和 [BigTable](http://highscalability.com/tags/bigtable) 。
### 资料库
1. 早期
-使用 MySQL 存储元数据,例如用户,标签和说明。
-从具有 10 个磁盘的单片 RAID 10 卷中提供数据。
-以信用卡为生,因此可以租用硬件。 当他们需要更多硬件来处理负载时,花了几天时间订购并交付。
-他们经历了一个共同的演变:单个服务器,转到具有多个读取从属的单个主机,然后对数据库进行分区,然后决定采用分片方法。
-出现复制延迟。 主机是多线程的,可在大型计算机上运行,因此它可以处理大量工作。 从站是单线程的,通常在较小的计算机上运行,并且复制是异步的,因此从站可能会大大落后于主站。
-更新导致高速缓存未命中,而高速缓存 I / O 导致复制缓慢的磁盘丢失。
-使用复制体系结构,您需要花费大量金钱来增加写入性能。
-他们的解决方案之一是通过将数据分为两个集群来优先处理流量:视频观看池和通用集群。 这个想法是人们希望观看视频,以便该功能应获得最多的资源。 YouTube 的社交功能不太重要,因此可以将其路由到功能较弱的群集中。
2. 后来的几年:
-进行数据库分区。
-分为多个分片,用户分配了不同的分片。
-传播写入和读取。
-更好的缓存位置,意味着更少的 IO。
-导致硬件减少 30%。
-复制副本延迟减少到 0。
-现在几乎可以任意扩展数据库了。
### 数据中心策略
1. 首先使用[管理托管](http://www.webhostingsearch.com/managed-web-hosting.php)提供程序。 以信用卡为生,所以这是唯一的方法。
2. 托管托管无法随您扩展。 您无法控制硬件或达成有利的网络协议。
3. 所以他们去了一个代管安排。 现在,他们可以自定义所有内容并协商自己的合同。
4. 使用 5 或 6 个数据中心以及 CDN。
5. 视频来自任何数据中心。 没有最接近的匹配或任何内容。 如果视频足够受欢迎,它将移入 CDN。
6. 与视频带宽有关,而与延迟无关。 可以来自任何 colo。
7. 对于图像延迟很重要,尤其是当页面上有 60 张图像时。
8. 使用 BigTable 将图像复制到不同的数据中心。 代码
查看不同的指标以了解谁最接近。
## 得到教训
1. **停顿时间**。 当您制定长期解决方案时,富有创意和冒险性的技巧可以帮助您在短期内应对。
2. **确定**的优先级。 知道什么对您的服务至关重要,并根据这些优先级确定资源和工作的优先级。
3. **选择战斗**。 不要害怕外包一些基本服务。 YouTube 使用 CDN 分发其最受欢迎的内容。 创建自己的网络将花费很长时间并且花费太多。 您的系统中可能会有类似的机会。 查看[软件即服务](http://highscalability.com/tags/saas),了解更多想法。
4. **保持简单!** 简单性使您可以更快地重新构造,以便可以对问题进行响应。 确实没有人真正知道简单性是什么,但是如果您不害怕进行更改,那么这表明简单性正在发生。
5. **分片**。 分片有助于隔离和限制存储,CPU,内存和 IO。 这不仅仅是要获得更多的写入性能。
6. **瓶颈上的不断迭代**:
-软件:数据库,缓存
-操作系统:磁盘 I / O
-硬件:内存,RAID
7. **您作为一个团队**成功。 拥有一支优秀的跨学科团队,了解整个系统以及系统的底层内容。 可以设置打印机,机器,安装网络等的人员。 一个好的团队,一切皆有可能。
[在[reduce]](http://www.reddit.com/r/programming/comments/2yfab3/the_youtube_architecture_2008/) 上。
很棒的文章。
非常感谢。
Dimitry。
真正的目的是跳过两行:将受欢迎的内容保留在 CDN 上。 换句话说,向 Akamai 扔钱,让 Akamai 担心。
当然,这是正确的答案,但是无论您使用的是 Python 还是无关紧要的。 如果没有 Akamai 的服务,鉴于上述基础架构,YouTube 将永远无法满足需求。
*-以信用卡为生,因此可以租用硬件。 当他们需要更多硬件来处理负载时,花了几天时间订购并交付。*
这到底是如何工作的? 当我们调查这个问题时,发现由于我们是一家新成立的初创公司,我们没有信誉(我想没有“发现”的意思,这很明显),因此硬件租赁公司只有在我们中一个人亲自支持贷款的情况下才会向我们出租。 。 鉴于启动风险高且费用高昂,我们最终购买了硬件并将其安装在各种低端 APR CC 等产品上。所有大型硬件供应商都表示“除非我们能看到您最近 N 年 纳税申报表等,我们不会向您出租。” 使得租赁似乎不是“靠信用卡生存”创业公司的真正选择。
哇,那是一篇很棒的文章,没想到 CDN:P
一定要接受红杉资本的私人风险投资,红杉资本也是 Google 的最大股东,并控制着其董事会。 红杉资本利用其影响力迫使 Google 大量为 Youtube 多付钱,红杉资本合作伙伴立即获利 5 亿美元。
这篇文章和视频对我正在从事的一些项目非常有希望。 谢谢!
完全令人惊叹; 100%值得一读。
哇,真疯狂。
一篇很好的文章,但我还没有学到任何新知识。 当前的 YouTube 体系结构已被应用于我们的类似 youtube 用户的罗马尼亚网站之一,该网站称为 [http://www.trilulilu.ro/](http://www.trilulilu.ro/) 。 我们的客户尚未实现的唯一一件事就是数据库分片,现在不需要了,因为 MySQL 数据库总数不到 250MB,而 MySQL 服务器处理的速度至少为 650 qps。
那是一篇很棒的文章。
我认为有趣的是,他们使用了 mod_fastcgi。 我的意思是,我之所以使用它,是因为我被迫使用共享主机,但是在尝试进行大规模扩展时,我总是听说过很多问题(即使那是它的设计目标)。 我想,如果做得对,FastCGI 对于服务器场可能是一笔宝贵的财富。
这是一篇很棒的文章,非常有趣!
很想听听更多这样的故事,例如 Flickr,Twitter,MySpace,Meebo ...客户仍然被大型企业参与者洗脑,认为他们需要 BEA Portal Server 或类似的东西来实现强大,可扩展的企业解决方案。 要说服他们不要将钱花在昂贵的事情上,要花费大量时间来部署和花费巨额财富(并且要花费大量时间)以使其从用户体验的角度来做自己想做的事情,这是一场战斗。 我一直在说:“ MySpace 每天注册 350,000 个用户,他们没有使用 Aqualogic-让我们为一些杀手级的 AJAX UI,小部件和一个实际上有用的 API 节省额外的现金。
您靠个人信用卡为生,这是正确的...肯定也可以追溯到早期的 YouTube ...
谢谢你的好文章
在 LAMP(Linux,Apache,MySQL,PHP)上组织 [http://anton.shevchuk.name/php/php-cookbook-myphptubecom/'](<a rel="nofollow" href="http://anton.shevchuk.name/php/php-cookbook-myphptubecom/) > MyPHPTube.com(YouTube 克隆)
这是一本很棒的书,很好地证明了 Python 并不是它的慢速教练。 在任何语言中,最大的挫折将永远是程序员的技能。
很棒的文章。 !
是否有人知道在提升过程中必须使用的服务器数量的演变。 ?
他们以多少开始,每台服务器具有哪种配置。
还有他们正在使用哪个主机的任何想法。 ?
谢谢
谢谢!
好的,那是有趣的信息,但是让我们停止将大量无序项目符号点称为“文章”吧? 一篇文章有句子。 可能分为几段。
这是制作 Web 2.0 的一个很好的例子。 记住那些在甲骨文,SUN 或其他大型公司上花费数百万美元来启动初创公司的邪恶旧时光,仅仅是为了使基本程序运行。 现在,谁需要他们。
有谁知道 Youtube 或 tinyURL 如何生成唯一 ID? 他们在使用某种哈希函数吗? 如果 URL 相同,tinyURL 不会生成唯一 ID。 例如,对于 www.google.com,它总是生成 [http://tinyurl.com/1c2。](http://tinyurl.com/1c2.) 他们如何编码/解码 URL?
我想我一直以为它们是预先分配的,所以它们总是最小且不可预测的,但是我找不到权威的答案。 不过,这是一个有趣的问题。
TinyURL 需要一个代码映射-> URL,因此,当您键入 www.google.com 时,它将在其数据库中搜索该 URL,并为您提供先前生成的代码。
是否有人知道在提升过程中必须使用的服务器数量的演变。 ?
他们以多少开始,每台服务器具有哪种配置。
Also any idea which host they were using. ?
谢谢
- 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 内容平台的经验教训