zoukankan      html  css  js  c++  java
  • YouTube 网站的架构演进阅读心得

    YouTube 在国内是个404网站,需要翻墙得见,这是有用的废话,先铺垫一下。

    从全球网站来看,它仅次于母公司 Google,全球排名位列第2。每天超过5亿以上视频播放量,平均每个用户点击10-15个视频。

    就是这样一个巨大型网站,却只有很少的人在维护网站,保证其可用性和可伸缩性。

    是什么原因呢?肯定不是Google舍不得花钱建团队,也不能只靠人品,但也不能靠寂寞。

    那么到底是什么呢?接下来我们就来了解 YouTube的基础技术架构。

    • Apache

    • Python

    • Linux(SuSe)

    • MySQL

    • psyco,一个动态的Python到C的编译器

    • lighttpd代替Apache做视频播放

    • 1,早期

      • 使用MySQL来存储元数据,如用户,标签(tags)和视频文字介绍、评论信息

      • 使用一个RAID 10的磁盘阵列来存储数据

      • YouTube经过一个常见系统的架构演进:

        从单服务器开始,然后单master和多read slave,接着做数据库partition分区,然后再hash sharding方式

      • 备份慢的痛苦。master数据库是多线程的并且运行在一个大型机上,可以处理许多工作;slave是单线程的且运行在小一些的服务器上,备份是异步的,所以slave会远远慢于master主机

      • 更新引起缓存失效,硬盘的I/O缓慢导致备份迟延

      • 使用备份架构花费不少钱来增加写的性能

      • YouTube解决方案把数据分成两个集群来将传输分出优先次序:一个视频查看的数据库集群,另一个是处理其它业务的集群。

      2,后期

      • 数据库分区

        分成shardings,不同的用户被分发到不同的sharding

      • 扩散读写

      • 更好的缓存位置意味着更少的I/O

        硬件设备减少30%

      • 备份延迟降低到0

      • 到现在,可以任意提升数据库的伸缩性

  • 相关阅读:
    Python格式化输出%s和%d
    操作数据库
    协议类介绍
    并发和并行和压测 、对带宽的理解解释
    悠悠大神的 并发当前目录下所有文件的方法(还没试过)
    post参数的方法 json data 和特别的传参
    接口测试简介
    appium的三种等待方式 (还没实践过,记录在此)
    人生进步目标
    保持一个会话 添加 HTTP Cookie管理器
  • 原文地址:https://www.cnblogs.com/andibier/p/11055403.html
Copyright © 2011-2022 走看看