slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
优酷网架构学习笔记
17611538698
webmaster@21cto.com

优酷网架构学习笔记

资讯 0 4554 2017-02-26 12:00:45

Youku-logo-office.jpg


介绍过视频老大YouTube的技术架构,相信大家看了都会有不少的感触。优酷在国内也算是视频网站中的姣姣者,它的架构相对于YouTube是怎么样的,本文介绍的一部分架构内容,希望对大家有用。


一  基本数据



据大数据统计,优酷网目前日均独立访问人数(UV)达到了1亿+,日均访问量(PV)接近20亿,全球网站排名217名,国内网站排名49名。
 
优酷最开始使用的服务器主要为Dell PowerEdge 1950/860,存储阵列以Dell MD1000为主。到目前为止,优酷网至少有6000多台服务器遍布在国内各大省市节点。


二 前端框架



从一开始,优酷使用LAMP架构构建了CMS,用于解决前端页面显示。其各个模块之间抽象分离较恰当,可扩展性很好,做到了UI可分离,让开发与维护变得简单&灵活。
 
那么,优酷前端模块调用关系是什么样子的呢?来看下图:
 
youku-framework.png


根据module、method及params来确定路由调用相对应模块,显得很简洁。下面是优酷的前端局部架构图:
 
youku-cms-uml.png



三 数据库之结构



优酷数据库的架构也是经历了一系列的迭代更新。
 
从一开始的单台MySQL服务器到简单的MySQL主从复制、SSD 优化、垂直分库、水平sharding 分库。
 
这一系列过程只有经历过才会有更深的体会。与Youtube的架构经历一样,架构也是一步步慢慢成长成熟。

1 MySQL主从复制:

MySQL的主从复制实现数据库的读写分离,很好的提升了读性能。其原理如下图:


 
mysql_replication_topology_threads.png



其主从复制的过程如下图所示:
 
 
mysql-partition-rep.png



主从复制机制,也会带来其他一系列性能瓶颈问题。比如:
    []写入无法扩展[/][]写入无法缓存[/][]复制延时[/][]锁表率上升[/][]表变大,缓存率下降[/]

 
问题产生了总得解决,于是音阶产生了如下的优化方案。

2、MySQL垂直分区

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

 


mysql-partition-rep.png


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

3、MySQL水平分片(Sharding)

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

 

sharding-3.png



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

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


四 缓存策略



所有大型网站系统都对“缓存”情有独钟。从HTTP缓存到memcached内存数据库缓存,优酷在此时并没有使用内存缓存。理由如下:
    []避免内存复制,内存颠簸,避免内存锁[/][]如接到老大哥通知要把某个视频撤下来,如果在缓存里是比较麻烦的[/]

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

另外,和Youtubde一样,访问优酷的保持流畅,归功于自建了完善的CDN网络(内容分发网络),通过多种方式保证分布在全国各地的用户就近访问。

 
比如用户点击视频播放请求后,优酷将根据用户所处地区位置,把离用户最近、服务状况最好的视频服务器或缓存服务器地址传送给用户,从而保证可以得到最佳的视频体验。


五 小结


 
以上给各位带来的是优酷的基础架构介绍。技术在不断的更新迭代。在此基础核心上,快速响应更多的业务和产品变化。


作者:21CTO社区
说明:内容一部分来自酷勤,开源中国等,一并致谢。


评论