YouTube系统架构【YouTube如此,你应该更有信心】

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

image.png

上一期,和大家分享了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)团队是成功的基石

另,本订阅号回复大于10的随机整数,都能获取随机好文哟,不妨试试看哈

目录
相关文章
|
移动开发 前端开发 数据可视化
分享63个Html后端模板,总有一款适合您
分享63个Html后端模板,总有一款适合您
509 3
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
625 2
|
人工智能 测试技术 Go
如何使用 Google 的 Gemini
Google Gemini是谷歌发布的人工智能大模型,能够在从数据中心到移动设备等不同平台上运行。本文将介绍Gemini以及如何使用Gemini。
2355 0
|
机器学习/深度学习 JSON 监控
智能定价模型:借助API实时更新商品价格信息
在电子商务的迅猛发展中,价格战成为商家间常见的竞争方式。然而,一成不变的价格策略无法满足市场的即时需求和消费者的多变偏好。因此,智能定价(也称为动态定价)成为了电商平台提升市场竞争力的关键工具。智能定价模型通过实时监控市场数据和消费者行为,自动调整商品价格以最大化收益或实现其他商业目标。本文将深入探讨如何利用API技术实现智能定价,并提供一个Python代码示例来指导读者进行实时价格更新。
|
6月前
|
消息中间件 监控 Java
《聊聊线程池中线程数量》:不多不少,刚刚好的艺术
本文深入探讨Java线程池的核心参数与线程数配置策略,结合CPU密集型与I/O密集型任务特点,提供理论公式与实战示例,帮助开发者科学设定线程数,提升系统性能。
|
缓存 网络协议 Linux
PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘
本文详细介绍了 Realtek RTL8125B PCIe 以太网芯片的规格以及在 Linux 中的驱动安装和配置方法。通过深入分析驱动源码,可以更好地理解其工作原理和优化方法。在实际应用中,合理配置和优化驱动程序可以显著提升网络性能和稳定性。希望本文能帮助您更好地使用和管理 RTL8125B,以满足各种网络应用需求。
1663 33
|
SQL 弹性计算 安全
在云上轻松部署达梦数据库
达梦数据库(DM Database)是达梦数据库有限公司开发的关系型数据库管理系统,广泛应用于政府、金融、能源等行业。它具备高性能、高安全、兼容性强、易管理等特点,支持多种操作系统,适用于关键业务系统、政务系统及大数据处理等场景。在阿里云上,可通过一键部署快速使用达梦数据库DM8。
|
人工智能 文字识别 API
moonshot-v1-vision-preview:月之暗面Kimi推出多模态视觉理解模型,支持图像识别、OCR文字识别、数据提取
moonshot-v1-vision-preview 是月之暗面推出的多模态图片理解模型,具备强大的图像识别、OCR文字识别和数据提取能力,支持API调用,适用于多种应用场景。
2398 6
moonshot-v1-vision-preview:月之暗面Kimi推出多模态视觉理解模型,支持图像识别、OCR文字识别、数据提取
|
机器学习/深度学习 消息中间件 监控
监控工具实现实时监测的方法
监控工具实现实时监测的方法
750 11
|
缓存 自然语言处理 JavaScript
Thinkphp6安装
Thinkphp6安装
337 0

热门文章

最新文章