关闭

YouTube 的架构扩展

826人阅读 评论(0) 收藏 举报
原贴:http://www.dbanotes.net/opensource/youtube_web_arch.html

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 网站的数据信息,有谁可以提供一点 ?

--EOF--

| | Comments (18) | | Edit

Monetize Your Site
<script type="text/javascript"><!-- google_ad_client = "pub-2198040673582211"; google_ad_output = "textlink"; google_ad_format = "ref_text"; google_cpa_choice = "CAAQhaT2_gEaCI52gVKP95-sKLGsuIEBMAA"; //--> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-2198040673582211&amp;cpa_choice=CAAQhaT2_gEaCI52gVKP95-sKLGsuIEBMAA&amp;oe=UTF-8&amp;dt=1191083642205&amp;lmt=1190476007&amp;format=ref_text&amp;output=textlink&amp;correlator=1191083642205&amp;url=http%3A%2F%2Fwww.dbanotes.net%2Fopensource%2Fyoutube_web_arch.html&amp;region=_google_cpa_region_&amp;ref=http%3A%2F%2Fwww.dbanotes.net%2Farchives.html&amp;cc=100&amp;ga_vid=39635014.1191083642&amp;ga_sid=1191083642&amp;ga_hid=2066726259&amp;flash=9&amp;u_h=800&amp;u_w=1280&amp;u_ah=776&amp;u_aw=1280&amp;u_cd=24&amp;u_tz=480&amp;u_his=1&amp;u_nplug=2&amp;u_nmime=3" language="JavaScript1.1" type="text/javascript"></script> Get Firefox with Google Toolbar for better browsing
<script type="text/javascript"><!-- google_ad_client = "pub-2198040673582211"; google_ad_output = "textlink"; google_ad_format = "ref_text"; google_cpa_choice = "CAAQidTQgAIaCEapPfRcsfp6KN2uuIEBMAA"; //--> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-2198040673582211&amp;cpa_choice=CAAQidTQgAIaCEapPfRcsfp6KN2uuIEBMAA&amp;oe=UTF-8&amp;dt=1191083642406&amp;lmt=1190476007&amp;prev_fmts=ref_text&amp;format=ref_text&amp;output=textlink&amp;correlator=1191083642205&amp;url=http%3A%2F%2Fwww.dbanotes.net%2Fopensource%2Fyoutube_web_arch.html&amp;region=_google_cpa_region_&amp;ref=http%3A%2F%2Fwww.dbanotes.net%2Farchives.html&amp;cc=100&amp;ga_vid=39635014.1191083642&amp;ga_sid=1191083642&amp;ga_hid=2066726259&amp;flash=9&amp;u_h=800&amp;u_w=1280&amp;u_ah=776&amp;u_aw=1280&amp;u_cd=24&amp;u_tz=480&amp;u_his=1&amp;u_nplug=2&amp;u_nmime=3" language="JavaScript1.1" type="text/javascript"></script> Generate revenue from your website. Google AdSense.

本文相关评论|Comments(18)

Jay 的评论:

为什么绝大多数采用MySQL而不是Oracle? LAMP是主要因素吗..Oracle太庞大了..

cocobear 的评论:

不错的文章,似乎很少有这么全面的对一个网站架构的介绍。

Fenng 的评论:

@Jay:

MySQL 是 OpenSource 软件,这一点无论如何不要忽略. 另外一点如你所说, Oracle 太庞大了,臃肿. 有些方面就不够灵活.

You XU 的评论:

@Fenng,
删掉了不管用. 他原话说的可能是: But we tried. 底下观众全笑了.
不过我是很久前看的了, 细节也不能确定/

Fenng 的评论:

@You XU,

视频我到现在还没有看到。还真不确定

Dan 的评论:

YouTube Scalability视频 Google Video在线代理地址
国内的朋友可以直接点击观看
http://www.instantmastercard.info/index.php?q=aHR0cDovL3ZpZGVvLmdvb2dsZS5jb20vdmlkZW9wbGF5P2RvY2lkPS02MzA0OTY0MzUxNDQxMzI4NTU5&hl=2ed

Fenng 的评论:

@Dan, 我自己也有个 Agent,

但同样不能看

草根网 的评论:

好文,收藏至20ju.com

xyb 的评论:

豆瓣同样是Python(Quixote, fastcgi)+MySQL+memcached+lighttpd(包括处理动态请求和静态文件)。

DontAsk 的评论:

--------国内的互联网应用,但从数据量来看,怕是只有 51.com 有这个规模.

别开玩笑了!51根本不值一提

qq 的评论:


Give me your email,I have
downloaded this video and can share with you.

###### info about youtube tech video

size:
flv 90mb
divx 300mb
time:
50min

qq 的评论:


Give me your email,I have
downloaded this video and can share with you.

###### info about youtube tech video

size:
flv 90mb
divx 300mb
time:
50min

Fenng 的评论:

@DontAsk:

51.com 一天增加 1T 数据。你说值得提一下么?

Keen 的评论:

keenkuang@gmail.com

Thx!

HD 的评论:

呵呵,也不用太重阳没外。其实国内做的不错的也大有人在。只不过少有国外这么open的来谈罢了。国内的视频网站大多数在使用服务商的cdn,这样就用钱解决了不少问题,所以也有不少遗憾。。。

Tenfire 的评论:

51.COM在CHINAJOY大会上给我的印象就是他们送的兜子最大。
前段时间每天在donews上都可以看到他们炒自己所谓的“招兵买马”。
上述文章虽然对于51.com只提及到了一次,但我想也是这篇文章的“核心”所在。


阿泰 的评论:

非常不错的文章,对Youtube的架构有了点滴了解。
收藏至
http://www.atdream.com/blog/article.asp?id=312
向Fenng致谢

9fav 的评论:

www.9fav.com 也是基于lighttpd 的,但开发语言不详?

添加评论

直接匿名评论 或者 登录 评论这篇文章(OpenID、TypeKey...)
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3166527次
    • 积分:33289
    • 等级:
    • 排名:第146名
    • 原创:76篇
    • 转载:1209篇
    • 译文:0篇
    • 评论:200条
    最新评论
    牛逼的网站