系统架构_优酷网

系统架构_优酷网

ID:42643289

大小:485.21 KB

页数:5页

时间:2019-09-19

系统架构_优酷网_第1页
系统架构_优酷网_第2页
系统架构_优酷网_第3页
系统架构_优酷网_第4页
系统架构_优酷网_第5页
资源描述:

《系统架构_优酷网》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、记得以前给大家介绍过视频网站龙头老大YouTube的技术架构,相信大家看了都会有不少的感触,互联网就是这么一个神奇的东西。今天我突然想到,优酷网在国内也算是视频网站的老大了,不知道他的架构相对于YouTube是怎么样的,于是带着这个好奇心去网上找了优酷网架构的各方而资料,虽然谈得没有YouTube那么详细,但多少还是挖掘了一点,现在总结一下,希望对喜欢架构的朋友有所帮助。一、网站基本数据概览•据2010年统计,优酷网日均独立访问人数(UV)达到了8900万,日均访问量(pv)更是达到了17亿,优酷凭借这一恢据成为google

2、榜单中国内视频网站排名最咼的厂商。•硕件方面,优酷网引进的戴尔服务器主要以PowerEdge1950与PowerEdge860为主,存储阵列以戴尔MD1000为主,2007的数据表明,优酷网已有1000多台服务器遍布在全国各大省市,现在应该更多了吧。二、网站前端框架从一开始,优酷网就自建了一套CMS来解决前端的页面显示,各个模块之间分离得比较恰当,前端可扩展性很好,UI的分离,让开发与维护变得十分简单和灵活,下图是优酷前端的模块调用关系:这样,就根据module、method及params来确定调用相对独立的模块,显得非常简

3、洁。下面附一张优酷的前端局部架构图:3CurrcntOonah3CurrentTopic二卫皮ItcCSSG«»cname■aun_icodescnptjonubDeftfdtG孑岐ccubdorohH、1/7•nN)mo0田一]・Rencer.XHT-tLl.Z0..1bind■♦•G^tD^SQt()♦SetDataSet()I件—■;•Rencer()—=G«0I«件G列联昜聚注•Randoi()□td°Is»Render()/(WG共亨页面o-:D.l1GFMFR0仪件O区HlnN;fT>9□dreooiG更而>I

4、sOeftult□u4jdaTtQaMg°pvuerpt«CSS•rerder()O目定义布投隶G文亞时•votenr•Post()三、数据库架构应该说优酷的数据库架构也是经历了许多波折,从一开始的单台MySQL服务器(JustRunning)到简单的MySQL主从复制、SSD优化、垂直分库、水平sharding分库,这一系列过程只有经历过才会有更深的体会吧,就像MySpace的架构经历一样,架构也是一步步慢慢成长和成熟的。1、简单的MySQL主从复制:MySQL的主从复制解决了数据库的读写分离,并很好的提升了读的性能,其原

5、来图如下:apachenhpwrite、"1

6、主/从复制readcluster/其主从复制的过程如下图所示:但是,主从复制也带来其他一系列性能瓶颈问题:1.写入无法扩展2•写入无法缓存3.复制延时4•锁表率上升5•表变大,缓存率下降那问题产牛总得解决的,这就产生下面的优化方案,一起来看看2、MySQL垂直分区如果把业务切割得足够独立,那把不同业务的数据放到不同的数据库服务器将是一个不错的方案,而且万一其中一个业务崩溃了也不会影响其他业务的正常进行,并且也起到了负载分流的作用,大大提升了数据库的吞吐能力。经过垂直分区后的数据库

7、架构图如下:PartiPart2Part3然而,尽管业务之间已经足够独立了,但是有些业务之间或多或少总会有点联系,如用户,基本上都会和每个业务相关联,况且这种分区方式,也不能解决单张表数据量暴涨的问题,因此为何不试试水平sharding呢?3、MySQL水平分片(Sharding)这是一个非常好的思路,将用户按一定规则(按id哈希)分组,并把该组用户的数据存储到一个数据库分片中,即一个sharding,这样随着用户数量的增加,只要简单地配置一台服务器即可,原理图如下:Shard1其他消息丿如何来确定某个用户所在的shard呢

8、,可以建一张用户和shard对应的数据表,每次请求先从这张表找用户的shardid,再从对应shard中查询相关数据,如下图所示:(1)ISuser103fKlinessaaesManagerShard2目录但是,优酷是如何解决跨shard的查询呢,这个是个难点,据介绍优酷是尽量不跨shard查询,实在不行通过多维分片索引、分布式搜索引擎,下策是分布式数据库查询(这个非常麻烦而且耗性能)四、缓存策略貌似大的系统都对“缓存”情有独钟,从http缓存到memcached内存数据缓存,但优酷表示没有用内存缓存,理由如下:1.避免内

9、存拷贝,避免内存锁2.如接到老大哥通知要把某个视频撤下来,如果在缓存里是比较麻烦的而且Squid的write()用户进程空间有消耗,Lighttpd1.5的AIO(异步I/O)读取文件到用户内存导致效率也比较低下。但为何我们访问优酷会如此流畅,与土豆相比优酷的视频加载速度略胜一筹?这个要归

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。