上一期,和大家分享了12306架构优化思路,本期讲和大家分享YouTube架构设计,阅读了本文你将了解到YouTube初期架构是个什么样子,以此,增强自己站点架构设计的信心。

YouTube网站架构吐槽(上)
YouTube作为一个几十亿级别流量的视频网站,其站点维护人员却少之又少,这些技术人员是如何设计YouTube架构,使其具备如此强大的抗压能力的呢,我们接着往下看。

核心技术要点
1)Apache:站点服务器
2)Python:Web应用主要是用Python搞定的
3)Linux(SuSe):操作系统(笔者:为何选用SuSe呢)
4)Mysql:数据库
5)psyco(笔者:psyco是Python的一个C语言扩展)
6)lighttpd:视频服务器没有用Apache,而是选择用了lighttpd

Web服务要点
1)使用NetScalar实现负载均衡,以及对静态内容的缓存(笔者:NetScalar是一个Web应用优化的解决方案,常用于Web应用加速,负载均衡,Web安全功能等)
2)Apache使用mod_fast_cgi模式(笔者:fastcgi是一个进程常驻的CGI模型,主要解决传统CGI模型令人诟病的“fork and execute”模型)
3)由一个Python服务专门负责Web请求的路由(笔者:那个时候Nginx还没有大行其道)
4)CPU密集型的复杂计算,使用psyco用C语言搞定(笔者:Python这个技术选型真的合适么)
5)Web层做页面缓存
6)数据层做数据缓存
7)对于某些数据,提前计算,并形成本地缓存,但这个优化没有大规模应用

Web服务效果
1)可以通过增加服务器来进行水平扩展
2)选择Python,是因为它开发效率高,互联网的时代,快速迭代和频繁发布的能力,你懂的(笔者:为什么不选php呢)
3)Python代码效率不是瓶颈所在,Web服务的瓶颈在RPC请求(笔者:意思就是,Web应用的瓶颈还是在后端)
4)响应时间基本控制在100ms以内(笔者:不评论了)

视频服务要点
1)每段视频不止存储在一个机器上,而是存储在一个小集群上,集群的优势在于A:更高的读性能B:可用性高C:数据在线备份(笔者:那个时代,视频的replica是比较先进的技术)
2)使用lighttpd作为视频的Web服务器,lighttpd的优势在于A:Apache太重B:有epoll模式C:有多进程模式,无论如何,YouTube希望同时处理更多的并发连接
3)热门视频放到CDN上
4)冷门视频,这里指PV低于20的视频,使用XXOO技术进行优化(笔者:这个地方没有看懂,原文是“Less popular content uses YouTube servers in various colo sites”,这个“colo”没懂是什么意思,如果你知道,请发消息给我)
5)由于视频的特殊性,尽量减少服务器与终端用户之间的路由器和交换机等设备
6)采用SATA磁盘进行随机寻道优化

视频预览图要点
1)用单独的集群存储预览图(笔者:你猜的没错,预览图就是存在文件系统上的)
2)使用squid作为Apache的前端(笔者:squid是一个流行的Web服务器反向代理,常用来做静态文件访问加速,理解为一个缓存服务吧)
3)未来准备使用BigTable来做预览图的存储

数据库要点
1)数据库使用Mysql,当然,用它只是来存储元数据
2)和其他站点应用一样,YouTube走过了单机,主从,水平切分的过程
3)主服务器用硬件条件较好的机器,使用多进程多实例模式;从服务器使用硬件条件差一点的机器,使用单实例模式
4)读写分离

经验教训
1)坚持就是胜利,解决短期问题的创新方案有风险,需要慎重。一直坚持,一定能找到长期方案
2)找到主要矛盾并集中资源解决
3)有选择性合作,不要害怕将项目的关键部分外包,例如YouTube的CDN
4)keep it simple,从简思想,不多说了
5)数据分隔,水平拆分
6)瓶颈的迭代优化,包括软件层,操作系统层,硬件层
7)团队是成功的基石

YouTube系统架构相关推荐

  1. 大型网站系统架构分析--转

    大型网站系统架构分析 原文地址:http://www.cnblogs.com/Mainz/archive/2009/04/28/1445424.html 千万级的注册用户,千万级的帖子,nTB级的附件 ...

  2. 大型网站系统架构分析

    千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题. 数据库海量数据处理:负载量不大的情况下sel ...

  3. 01_Android应用开发环境_01_android发展史及系统架构

    1.1 Android发展史与现状 Andy Rubin创立22个月后→(2005年)Google收购. 2008 Patrick Brady于Google I/O 演讲"Anatomy & ...

  4. Web2.0的系统架构与六大关键问题

    搜索.照片.音乐.视频.混搭式应用(Mash-Ups).维基(Wiki).网络日志(Blog).社区,还有那些来自各地展示天堂般美景的高清 晰图片--它们一起构成了Web2.0 热潮的丰富内容.但是对 ...

  5. 想染指系统架构?看这篇就够了

    https://juejin.im/post/58f45b058d6d8100648a69f0 原文地址:github.com/donnemartin/system-design-primer 译文出 ...

  6. 高并发高负载系统架构

    本文作者在Cernet做过拨号接入平台的搭建,而后在Yahoo3721负载搜索引擎前端平台开发,又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网 ...

  7. 著名网站系统架构设计

    WikiPedia 技术架构学习分享 YouTube 的架构扩展 Internet Archive 的海量存储浅析 LinkedIn 架构笔记 Tailrank 网站架构 Twitter 的架构扩展: ...

  8. 想染指系统架构?你绝对不可错过的一篇

    本文讲的是想染指系统架构?你绝对不可错过的一篇., 系统设计入门 翻译 有兴趣参与翻译? 以下是正在进行中的翻译: 巴西葡萄牙语 简体中文(已完成) 土耳其语 目的 学习如何设计大型系统. 为系统设计 ...

  9. 系统架构升级要不要上微服务?历“久”弥新微服务——你真的需要升级微服务架构吗

    在 <微服务架构设计模式> 一书中,作者总结了关于微服务的一些"重点",原文如下: 中国企业和开发者对微服务架构的热情让我印象深刻.但如同我给所有客户的忠告一样,我想对 ...

最新文章

  1. 刷题_thinkinginjava_吸血鬼数字
  2. php: xampp安装对应的phalcon版本(3.2.2-php5.6):比如redis-php5.6, php_igbinary-5.6
  3. 4个最难的 Elastic Search 面试题
  4. Visual Studio——理解多字节编码与Unicode码
  5. tomcat默认连接数_Tomcat的默认连接器
  6. 第九十一期:架构设计常用到的10种设计模式,你都知道吗?
  7. python 中BeautifulSoup入门
  8. 【python】collections.Counter()函数
  9. 实现IMSI、IMEI查询
  10. linux环境编程做的是什么,Linux环境
  11. Tips for vcpkg
  12. 原理图与 PCB 绘制备忘
  13. 昂达v819i安装win8.1时报错
  14. Python 中的列表(一)
  15. uniapp实现图片压缩:
  16. 充电桩测试设备TK4860C交流充电桩检定装置
  17. 一战封神快速升级攻略
  18. 视频号运营指南百科书,新手必备干货丨国仁网络
  19. C#,图像二值化(05)——全局阈值的联高自适应算法(Legal Self-Adaptive Thresholding)及其源代码
  20. 网络工程师成长日记309-西安李宁项目

热门文章

  1. #章节十八:收发邮件
  2. scrcpy - Android无需ROOT的跨平台投屏工具
  3. VS Operation could not be completed, Value does not fall within the expected range
  4. 【OS笔记 14】进程同步篇——基本概念
  5. 5 大 DevOps 工具,看看你用过几个?
  6. RHCSA第一次作业
  7. 本机连过的wifi忘记密码,如何找到密码?
  8. jekyll + github 发博客
  9. SpringBoot 使用jedis整合redis实现缓存处理
  10. postman 使用