优酷网架构分享

标签: 优酷网 架构 分享 | 发表时间:2011-09-09 08:29 | 作者:一场情动,半世流离 beralee
出处:http://www.cnblogs.com/

记得以前给大家介绍过视频网站龙头老大YouTube的技术架构,相信大家看了都会有不少的感触,互联网就是这么一个神奇的东西。今天我突然想到,优酷网在国内也算是视频网站的老大了,不知道他的架构相对于YouTube是怎么样的,于是带着这个好奇心去网上找了优酷网架构的各方面资料,虽然谈得没有YouTube那么详细,但多少还是挖掘了一点,现在总结一下,希望对喜欢架构的朋友有所帮助。

一、网站基本数据概览

  • 据2010年统计,优酷网日均独立访问人数(uv)达到了8900万,日均访问量(pv)更是达到了17亿,优酷凭借这一数据成为google榜单中国内视频网站排名最高的厂商。
  • 硬件方面,优酷网引进的戴尔服务器主要以 PowerEdge 1950与PowerEdge 860为主,存储阵列以戴尔MD1000为主,2007的数据表明,优酷网已有1000多台服务器遍布在全国各大省市,现在应该更多了吧。

二、网站前端框架

从一开始,优酷网就自建了一套CMS来解决前端的页面显示,各个模块之间分离得比较恰当,前端可扩展性很好,UI的分离,让开发与维护变得十分简单和灵活,下图是优酷前端的模块调用关系:

这样,就根据module、method及params来确定调用相对独立的模块,显得非常简洁。下面附一张优酷的前端局部架构图:

 

三、数据库架构

应该说优酷的数据库架构也是经历了许多波折,从一开始的单台MySQL服务器(Just Running)到简单的MySQL主从复制、SSD优化、垂直分库、水平sharding分库,这一系列过程只有经历过才会有更深的体会吧,就像MySpace的架构经历一样,架构也是一步步慢慢成长和成熟的。

1、简单的MySQL主从复制:

MySQL的主从复制解决了数据库的读写分离,并很好的提升了读的性能,其原来图如下:

其主从复制的过程如下图所示:

但是,主从复制也带来其他一系列性能瓶颈问题:

  1. 写入无法扩展
  2. 写入无法缓存
  3. 复制延时
  4. 锁表率上升
  5. 表变大,缓存率下降

那问题产生总得解决的,这就产生下面的优化方案,一起来看看。

2、MySQL垂直分区

如果把业务切割得足够独立,那把不同业务的数据放到不同的数据库服务器将是一个不错的方案,而且万一其中一个业务崩溃了也不会影响其他业务的正常进行,并且也起到了负载分流的作用,大大提升了数据库的吞吐能力。经过垂直分区后的数据库架构图如下:

然而,尽管业务之间已经足够独立了,但是有些业务之间或多或少总会有点联系,如用户,基本上都会和每个业务相关联,况且这种分区方式,也不能解决单张表数据量暴涨的问题,因此为何不试试水平sharding呢?

 

3、MySQL水平分片(Sharding)

这是一个非常好的思路,将用户按一定规则(按id哈希)分组,并把该组用户的数据存储到一个数据库分片中,即一个sharding,这样随着用户数量的增加,只要简单地配置一台服务器即可,原理图如下:

如何来确定某个用户所在的shard呢,可以建一张用户和shard对应的数据表,每次请求先从这张表找用户的shard id,再从对应shard中查询相关数据,如下图所示:

但是,优酷是如何解决跨shard的查询呢,这个是个难点,据介绍优酷是尽量不跨shard查询,实在不行通过多维分片索引、分布式搜索引擎,下策是分布式数据库查询(这个非常麻烦而且耗性能)

 

四、缓存策略

貌似大的系统都对“缓存”情有独钟,从http缓存到memcached内存数据缓存,但优酷表示没有用内存缓存,理由如下:

  1. 避免内存拷贝,避免内存锁
  2. 如接到老大哥通知要把某个视频撤下来,如果在缓存里是比较麻烦的

而且Squid 的 write() 用户进程空间有消耗,Lighttpd 1.5 的 AIO(异步I/O) 读取文件到用户内存导致效率也比较低下。

但为何我们访问优酷会如此流畅,与土豆相比优酷的视频加载速度略胜一筹?这个要归功于优酷建立的比较完善的内容分发网络(CDN),它通过多种方式保证分布在全国各地的用户进行就近访问——用户点击视频请求后,优酷网将根据用户所处地区位置,将离用户最近、服务状况最好的视频服务器地址传送给用户,从而保证用户可以得到快速的视频体验。这就是CDN带来的优势,就近访问,有关CDN的更多内容,请大家Google一下。

备注:本文转载自http://www.it-ezone.com

作者: 一场情动,半世流离 发表于 2011-09-09 08:29 原文链接

评论: 5 查看评论 发表评论


最新新闻:
· 年轻人,你该加入新创公司(2011-09-09 08:31)
· 信不信由你:Google正在使用你的Analytics数据(2011-09-09 08:14)
· 微软将展示Win 8平板电脑 欲证明发展并未停滞(2011-09-09 08:13)
· 传拉手网启动IPO 或成首家赴美上市团购网站(2011-09-09 08:12)
· 专利之战:新的竞争手段(2011-09-09 08:11)

编辑推荐:用ASP.NET写自己的服务框架

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [优酷网 架构 分享] 推荐:

优酷网架构分享

- beralee - 博客园-首页原创精华区
记得以前给大家介绍过视频网站龙头老大YouTube的技术架构,相信大家看了都会有不少的感触,互联网就是这么一个神奇的东西. 今天我突然想到,优酷网在国内也算是视频网站的老大了,不知道他的架构相对于YouTube是怎么样的,于是带着这个好奇心去网上找了优酷网架构的各方面资料,虽然谈得没有YouTube那么详细,但多少还是挖掘了一点,现在总结一下,希望对喜欢架构的朋友有所帮助.

Poppen.de的技术架构分享

- - 企业架构 - ITeye博客
网址:  http://www.javabloger.com/article/couchdb-erlang-rabbitmq-red5-linux-poppen-architecture.html. Poppen.de是一个德国的 交友/ 聊天/ 视频 的SNS网站, 部分内容. NSFW,网站采用了很多我们熟悉的技术,像Nginx ,MySQL,CouchDB,Erlang,Memcached的,RabbitMQ(消息服务器),采用了Graphite作为网站的系统监控,Red5作为视频服务,Tsung作为压力测试工具,选择的技术种类较多,还采用.

WebRebuild 分享: 支付宝CSS样式架构

- 红茶 - 幸福收藏夹
发现每次有 PPT 的夜晚都会有暴风雨和音乐,最终分不清听到的声音究竟是自己想要还是外加的. 然后,嗅着熟悉城市的味道,带着想念和把所有人当大西瓜的勇气开始上台,分享自己的历程,散播自己的想法. 这次最大的感触不是技术层面上的,而是态度与生活. Nico 的坚持,Impact 兼做体验报告的努力,Emu 的想法,这是他们的态度;鸽子小两口淡淡的让人羡慕的幸福,猫哥依然自由和帅气拖着他家梅儿,Loading 对生活与工作平衡的看法.

Udacity分享他们在Google App Engine上的架构

- - InfoQ cn
Udacity是一个以提供个性化计算机教育免费在线课程为主的网站,虽然该网站上目前只有18种课程,但是它的流量却相当可观,目前在Alexa的排名是11926. Chris Chew是该网站的资深软件工程师. 日前,他在Google App Engine的官方博客上分享了如何使用App Engine来构建Udacity.

淘宝网架构分享总结 - 架构,分布式,淘宝,虚拟化,水平伸缩

- - 互联网 - ITeye博客
关键字:淘宝网架构分享总结 - 架构,分布式,淘宝,虚拟化,水平伸缩. 一场由淘宝的架构师,曾宪杰先生主讲的淘宝网架构分享. 一、为什么stateless比较有利于实现水平伸缩. 关于什么是stateless的扫盲,见这个贴: http://kyfxbl.iteye.com/blog/1831869.

RightScale工程师分享跨云应用架构的三个挑战

- - InfoQ cn
根据应用需要部署资源,这是云计算的关键好处之一. 不过,随着使用私有云的企业越来越多,当某个应用的资源需求超出单一私有云的容量时,他们就需要考虑使用另一个云平台,甚至包括公共云. 此类状况称为“云爆发(cloudbursting)”,针对云爆发,应用的架构也需要进行调整. RightScale的工程师 Stephen Bylo在RightScale官方博客上发表文章《 应对云爆发的挑战》,分享了如何应对云爆发的经验.

分享架构实践,搞移动互联网数据分析不得不看!

- - SegmentFault 最新的文章
在日前的 nfoQ ArchSummit(全球架构师峰会)上,友盟高级技术总监叶谦分享了一些友盟数据平台的整体架构实践经验,很多伙伴要演讲速记. 刚巧,友盟君发现【chinastor】阿明同学已经梳理了一份详文,借花献佛了. 友盟早在 2010 年就专注移动开发者平台,在叶谦看来,数据是移动互联网的主旋律.

雪球在股市风暴下的高可用架构改造分享

- - 唐福林-博客雨
本文根据唐福林老师在“高可用架构”微信群所做的《股市风暴下的雪球架构改造经验分享》整理而成,转发请注明来自微信公众号ArchNotes. 唐福林,雪球首席架构师,负责雪球业务快速增长应对及服务性能与稳定架构优化工作. 毕业于北京师范大学,之前曾任微博平台资深架构师,微博技术委员会成员. 长期关注并从事互联网服务后端性能及稳定性架构优化工作.

Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享

- - 企业架构 - ITeye博客
架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化、可移植性是CI/CD,DevOps,微服务的重要实现技术. 但目前技术还不够成熟,在生产实践中会遇到不少坑. 本期参与小组交流的是国内较早采用 Docker 实践的公司.

千万级规模高性能、高并发的网络架构经验分享

- - 编程语言 - ITeye博客
在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们 战略上 要重 视 它 , 战术上又 要 藐 视 它. 先举个例子感受一下千万级到底是什么数量级. 现在很流行的优步(Uber),从媒体公布的信息看,它每天接单量平均在百万左右, 假如每天有10个小时的服务时间,平均QPS只有30左右.