`

YouTube 的架构扩展

阅读更多

YouTube 的架构扩展

网址:

西雅图扩展性的技术研讨会 上,YouTube 的 Cuong Do 做了关于 YouTube Scalability 的报告。视频内容在 Google Video 上有(地址 ),可惜国内用户看不到。

Kyle Cordes 对这个视频中的内容做了介绍 。里面有不少技术性的内容。值得分享一下。(Kyle Cordes 的介绍是本文的主要来源)

简单的说 YouTube 的数据流量, "一天的YouTube流量相当于发送750亿封电子邮件.", 2006 年中就有消息说每日 PV 超过 1 亿,现在? 更夸张了,"每天有10亿次下载以及6,5000次上传", 真假姑且不论, 的确是超乎寻常的海量. 国内的互联网应用,但从数据量来看,怕是只有 51.com 有这个规模. 但技术上和 YouTube 就没法子比了.

Web 服务器

YouTube 出于开发速度的考虑,大部分代码都是 Python 开发的。Web 服务器有部分是 Apache, 用 FastCGI 模式。对于视频内容则用 Lighttpd 。据我所知,MySpace 也有部分服务器用 Lighttpd ,但量不大。YouTube 是 Lighttpd 最成功的案例。(国内用 Lighttpd 站点不多,豆瓣 用的比较舒服。by Fenng )

视频

视频的缩略图(Thumbnails)给服务器带来了很大的挑战。每个视频平均有4个缩略图,而每个 Web 页面上更是有多个,每秒钟因为这个带来的磁盘 IO 请求太大。YouTube 技术人员启用了单独的服务器群组来承担这个压力,并且针对 Cache 和 OS 做了部分优化。另一方面,缩略图请求的压力导致 Lighttpd 性能下降。通过 Hack Lighttpd 增加更多的 worker 线程很大程度解决了问题。而最新的解决方案是起用了 Google 的 BigTable, 这下子从性能、容错、缓存上都有更好表现。看人家这收购的,好钢用在了刀刃上。

出于冗余的考虑,每个视频文件放在一组迷你 Cluster 上,所谓 "迷你 Cluster" 就是一组具有相同内容的服务器。最火的视频放在 CDN 上,这样自己的服务器只需要承担一些"漏网"的随即访问即可。YouTube 使用简单、廉价、通用的硬件,这一点和 Google 风格倒是一致。至于维护手段,也都是常见的工具,如 rsync, SSH 等,只不过人家更手熟罢了。

数据库

YouTube 用 MySQL 存储元数据--用户信息、视频信息什么的。数据库服务器曾经一度遇到 SWAP 颠簸的问题,解决办法是删掉了 SWAP 分区! 管用。

最初的 DB 只有 10 块硬盘,RAID 10 ,后来追加了一组 RAID 1。够省的。这一波 Web 2.0 公司很少有用 Oracle 的(我知道的只有 Bebo ,参见这里). 在扩展性方面,路线也是和其他站点类似,复制,分散 IO。最终的解决之道是"分区",这个不是数据库层面的表分区,而是业务层面的分区(在用户名字或者 ID 上做文章,应用程序控制查找机制)

YouTube 也用 Memcached .

很想了解一下国内 Web 2.0 网站的数据信息,有谁可以提供一点 ?

分享到:
评论

相关推荐

    Youtube数据集数据分析.zip

    2. **探索性数据分析(EDA)**:EDA是数据分析的重要步骤,用于理解数据的结构、分布、异常值以及潜在关系。在这个项目中,我们可能对各项指标进行了统计摘要,创建了可视化图表,比如直方图、散点图和箱型图,以...

    Youtube开源的基于MySQL的水平扩展的数据库集群管理平台.zip

    Vitess是一个由YouTube开源的基于MySQL的数据库集群管理平台,专为水平扩展而设计,旨在支持大规模在线服务。这个项目使用Go语言进行开发,提供了一整套解决方案,包括分片、读写分离、自动故障恢复和高效的查询路由...

    YouTubeApi_objects_class_

    添加此功能可能意味着开发者正在扩展库的删除操作,以便用户能够更全面地管理和控制他们的YouTube内容。 在标签中提到的"objects class"进一步确认了我们正在处理的是面向对象的设计。对象类是OOP的关键组成部分,...

    猫抓(cat-catch) 资源嗅探扩展,能够帮你筛选列出当前页面的资源

    至于"cat-catch-master"这个压缩包文件,很可能是猫抓的源代码仓库,包含了项目的完整结构和文件。对于开发者来说,这是一个宝贵的资源,他们可以深入研究其内部机制,进行二次开发,添加更多自定义功能,或者根据...

    base-yt-unuglify.json_youtube_

    1. **模块化编程**:YouTube的源码可能采用了模块化设计,如CommonJS或ES6的import/export,使得代码结构清晰,易于维护和扩展。 2. **异步编程**:由于网页需要实时响应用户的操作,因此JavaScript中的Promise、...

    CTR Youtube Theme Wordpress

    4. **SEO友好**:为了增加流量,该主题可能包含了搜索引擎优化(SEO)的最佳实践,如元标签、结构化数据支持等,以帮助网站在搜索结果中排名更高。 5. **自定义选项**:为了让用户可以根据自己的需求定制网站外观,...

    Youtube Gaming风格的Tab.zip

    这个标签设计可能是为了在网页应用或浏览器扩展中提供一种与YouTube Gaming类似的用户体验。 【描述解析】 描述中的"Youtube Gaming风格的Tab.zip"表明这是一个压缩文件,包含了实现这种风格的源代码或资源文件。...

    各互联网公司的网站架构

    在本压缩包中,我们能够了解到包括Facebook、YouTube、淘宝和豆瓣等知名互联网公司的网站架构设计。这些公司的架构设计都是业界的典范,具有很强的学习和参考价值。 1. Facebook的网站架构: Facebook作为全球最大...

    简易框架demo-简单的复现了一下可爱的youtube

    描述中的“简易框架demo”暗示了这是一个轻量级的框架演示,可能是为了快速搭建应用的基础结构,便于开发者快速理解和上手。提到“可爱的youtube”,这可能意味着该框架的实现聚焦于视频播放、搜索或用户界面等与...

    基于PHP的Youtube镜像源码 PHP版.zip

    PHP可以使用PDO或mysqli扩展与数据库进行交互,存储和查询视频元数据。 7. **缓存机制**:为提高性能,可以采用缓存策略。比如,当第一次请求某个视频时,可以将其内容缓存到本地,之后的请求就直接从缓存中读取,...

    youtube字幕提取器

    6. **扩展功能**:一些高级的字幕提取器可能还包含自动翻译、字幕校对、批量处理等功能,以满足更多用户需求。 总之,“YouTube字幕提取器”是一个便捷的工具,它利用HTML等技术简化了从YouTube视频中获取字幕的...

    ebay,youku,facebook等架构文档

    2. **YouTube架构** (youku_arch_qcon2009_beijing.pdf): - YouTube的架构着重于视频上传、存储、编码、分发和播放的技术挑战。 - 使用CDN(Content Delivery Network)优化视频流媒体的性能。 - 分布式数据库和...

    大型网站架构技术方案集锦.doc

    YouTube的架构扩展同样引人关注。YouTube的数据流量巨大,每天的视频观看相当于发送7500亿封电子邮件。为了应对这种规模,YouTube大量使用Python进行开发,Web服务器部分采用Apache搭配FastCGI,以及Lighttpd来处理...

    网站架构及高性能并发服务器设计

    很早之前开始收集整理的网站架构及高性能并发服务器设计的一些好的案例及实际优化经验。... 资料收集:高并发 高性能 高扩展性 Web 2.0 站点架构设计及优化策略 243  CommunityServer性能问题浅析 250

    高性能高并发服务架构.doc

    #### YouTube的架构扩展 - 采用了分布式文件系统、内容分发网络(CDN)、负载均衡等技术,确保了视频的快速上传和流畅播放。 #### eBay的数据库分布扩展架构 - 实现了数据库的水平扩展,通过分片、复制等手段,...

    AOMC:实施横向扩展架构的Web聊天服务(2019 Smilegate开发营)

    横向扩展服务器架构 认证服务器 用户登录发出的令牌存储在Redis中。 所有需要身份验证信息的服务器都可以查找Redis,而不是多个身份验证服务器。 聊天服务器 每个聊天服务器都有一个消息队列(R

    YouTube TechCBT AngularJS 系列视频学习笔记

    TechCBT在YouTube上提供的AngularJS系列视频教程是学习这个框架的宝贵资源。 在"UI Router"这一部分,我们主要关注的是AngularJS中的路由管理工具。UI Router是AngularJS的一个第三方扩展库,它提供了更高级别的...

    Youtube-Inventory-master.zip

    - **数据结构**:合理选择数据结构(如数组、列表或字典)以提高查找和操作效率。 - **批量操作**:减少频繁的脚本调用,通过批处理更新库存状态。 - **内存管理**:避免不必要的内存分配,如复用对象和池化技术...

Global site tag (gtag.js) - Google Analytics