详解YouTube的架构原则和扩展经验
2020-12-31 11:38:18 阅读(212) 评论(0)
YouTube发展迅速,每天视频点击量超过1亿,但维护站点并保证伸缩性的人却寥寥无几。这类似于PlentyOffish,少数人维护庞大的系统。原因是什么?放心,绝对不是靠性格,也不是靠孤独。我们来看看YouTube的整体技术结构。平台 ApachePythonLinux(SuSe)MySQLpsyco,动态Python到C的编译lightpd取代Apache进行视频查看状态,支持2005年2月和2006年3月每天3000万视频点击,2006年7月每天1亿视频点击,2个可伸缩软件架构师2个软件开发工程师,2个网络工程师,1DBAWeb服务器1,NetScaler用于负载均衡和静态内容缓存2fast_cgi运行Apache3,使用Python应用程序服务器来处理要求的路由4,应用程序服务器与多个数据库和其他信息源交互,以获取数据和格式化html页面5,通常可以添加更多的机器来提高web层的可伸缩性6,Python的Web层代码通常不是性能瓶颈,大部分时间阻塞在RPC7,Python允许快速灵活地开发和部署8,通常每个页面服务不到100毫秒的时间9,使用Psyco(类似JIT编译器的动态Python到C的编译器)来优化内部循环10。对于一些昂贵的块使用预先生成和缓存的html12,数据库使用行级缓存13,缓存完整的python对象14,一些数据被计算并发送到每个程序,因此这些值缓存在本地内存中。这是一种使用不当的策略。这是一种使用不当的策略。应用服务器中最快的缓存不需要太多时间就能将预计值发送给所有服务器。只需得到一个代理来监控变更,预计算,然后发送。视频服务1,成本包括带宽、硬件和能源消耗2,每个视频由一个迷你集群组成,每个视频由一台以上的机器持有3,使用一个集群意味着: -更多的硬盘持有内容意味着更快 -failover。如果一台机器出了问题,另一台机器可以继续服务 -在线备份4,使用lighttpd作为Web服务器提供视频服务: -Apache的费用太大了 -使用epoll等待多个fds -从单过程配置到多过程配置,处理更多的连接5,大部分流行内容转移到CDN: -CDN在多个地方备份内容,这样,内容更接近用户的机会就会更高 -CDN机器往往内存不足,因为内容太流行,内容进出内存的颠簸很少。6.不太流行的内容(每天浏览1-20次)在很多colo站点使用YouTube服务器。 -长尾效应。一个视频可以播放多个视频,但是很多视频都在播放。多个视频可以播放,但许多视频正在播放。随机硬盘块被访问 -在这种情况下,缓存不是很好,所以花钱在更多的缓存上可能没有多大意义。 -调整RAID控制,注意其他低级问题 -调整每台机器上的内存,不要太多或太少 视频服务关键点 1.保持简单和便宜。2.保持简单的网络路径。内容和用户之间不应该有太多的设备。3.使用常用硬件,很难找到昂贵的硬件来帮助文档。4.使用简单而常见的工具,使用大多数建在Linux或以上的工具5,可以很好地处理随机搜索(SATA,tweaks)缩略图服务1,达到高效惊人的难度2,每个视频大概有4个缩略图,所以缩略图比视频多很多3,缩略图只有几台机器上的host4,持有一些小东西遇到的问题: -OS级别的大量硬盘搜索、inode和页面缓存问题 -单目录文件限制,特别是Ext3,后来移动到多层结构。最近内核2.6的改进可能使Ext3允许大目录,但在文件系统中存储大量文件并不是一个好主意 -每秒都有大量的请求,因为web页面可能会在页面上显示60个缩略图 -Apache在这种高负载下的表现非常糟糕 -在Apache前端使用squid,这样工作了一段时间,但由于负载继续增加,以失败告终。它把每秒300个请求变成了20个请求 -尽量使用lighttpd,但由于使用单线程,它陷入了困境。遇到多过程问题,因为它们保持自己独立的缓存 -这么多图片,一台新机器只能接管24小时 -重启机器需要6-10个小时来缓存5,YouTube开始使用GogleBigTable来解决所有这些问题,分布式数据存储: -避免小文件问题,因为它收集文件在一起 -快,容忍错误 -由于使用分布式多级缓存,延迟较低,该缓存与多个不同的collocation站点一起工作 -更多信息参考GoogleArchitecture,GoogletalkArchitecture和Bigtable数据库 1,早期 -使用MySQL存储元数据,如用户、tags和描述 -用RAID10存储整个10硬盘的数据 -YouTube依靠信用卡租用硬件 -YouTube经历了一场常见的革命:单服务器,然后是单master和多readslaves,然后是数据库分区,然后sharding模式 -痛苦和备份延迟。master数据库是多线程的,运行在大机器上,所以可以处理很多工作。slaves是单线程的,通常运行在较小的服务器上,备份是异步的,所以slaves会远远落后于master。 -更新导致缓存失效,慢I/O硬盘导致慢备份 -使用备份架构需要大量的money来获得更高的写作性能 -YouTube的解决方案之一是将数据分为两个集群,将传输分为优先级:视频查看池和一般集群2,后期 -数据库分区 -分为shards,不同的用户指定不同的shards -扩散读写 -更好的缓存位置意味着更少的IO -硬件减少30% -备份延迟减少到0 -依靠信用卡,可以随意完善数据库的可伸缩性数据中心策略1,因此,一开始只能使用受管主机提供商2,受管主机提供商无法提供可伸缩性,无法控制硬件或使用良好的网络协议3,YouTube改为使用colocationarangement。现在YouTube可以定制一切,并同意自己的合同4,使用5到6个数据中心和CDN5,视频来自任何数据中心,而不是最近的匹配或其他任何东西。现在YouTube可以定制一切并同意自己的合同4,使用5到6个数据中心和CDN5,视频来自任何数据中心,而不是最近的匹配或其他任何东西。如果一个视频足够受欢迎,它将移动到CDN6,这取决于视频带宽,而不是真正的延迟。可以来自任何colo7,图片延迟非常严重,特别是当一个页面有60张图片时,使用bigtable将图片备份到不同的数据中心,代码查看谁是最近的扩展思维,虽然下面不是一个新想法,但我希望它能帮助你。分而治之是扩展技术的灵魂。考虑以层次化的方式完成所有工作。这也是数据分片的症结。要知道如何将数据分区,以及如何将分区的数据连接起来。总而言之,保持简单和松散的耦合是非常必要的。充分利用Python的动态特性,构建易于扩展的软件架构。近似的正确性。相信监控系统报告的系统运行状态。假如问题没有出现,就认为一切都很好。不一致的数据模型。比如读评论的人和写评论的人会对你刷新页面的动作有不同的反应,但是不需要完全基于事务处理进行系统设计,会显得过度矫枉过正。我们仍然需要不一致的数据模型。分布式系统的随机性。像气象系统一样,分布式系统在调试分布式系统时会有更多的随机性。例如,缓存过期。一般情况下,服务器会缓存流行视频24小时。如果缓存同时过期,服务器将同时开始缓存,负载如雷声!最快的函数调用是不做任何调用。合理设计事务处理的间隔和次数。仔细观察API,心中有数。如何定义输入和输出?本质上,所有的函数调用都是围绕数据发生的。函数调用后会发生什么?RPC重定向应用于Python。程序员是代码的构建者,所以要做好协议。如果代码不幸失败,也可以从RPC输出中追踪原因。没有完美的组件。一个组件的运行周期可能会持续1-6个月,没有人知道它会持续多久。随着时间的推移,我们会用Python和C重写一些东西,这证明你正在淘汰旧组件,当你观察到一个新组件出现时,它就诞生了。没有人知道整个系统的运行机制。因此,我们需要定义组件。视频转码与视频搜索完全不同,建立良好的数据规范非常重要。效率与可扩展性并重。最有效的是用C实现过程,但这种方法缺乏可扩展性。*宏观层面、组件及其失败的原因。使用RPC明智吗?内联如何?分解研究可能会发现不同之处。重视算法。与其绞尽脑汁用Python来实现高效算法,不如用它来做更实用的事情。C语言在这方面有其优势。很少从事面向对象的设计。我们使用大量的名称空间来组织数据,但很少面向对象。我愿意用以下词来形容我们的代码树:简单、实用、优雅、正交、可组合,这是我们的追求。总结YouTube解决问题的哲学只有一个词:简单。许多YouTube产品最初来自一个简单的Python脚本。这是我们的一句老话,不积小步,不至千里;不积小流,不能成江海。
推荐阅读
- 小程序推广计划账号需要实名吗?
小程序推广计划账号需要实名吗?需要实名因为小程序必须遵循政府和互联网管理部门的相关规定和要求,保障用户利益和信息安全。 在小程序推广计划中,账号需要绑定实名认证的个人或企业主体信息,以实现真实有效地发布和推广广告。 同时,实名认证也可以…查看详情
- 网站建设的具体的流程有哪些
网站建设其实是一个比较漫长的过程,在网站建设的过程当中,也应该要注意很多的细节问题。其实网站建设对一家企业来讲是非常重要的事情,能够更好的将企业推广出去,也能够留住更多的客户,所以说在网站建设的时候,相关的流程也应该要提前知道。…查看详情
- 简单又好用的视频去水印小妙招,赶快get起来吧!
在短视频潮流发展的今天,很多人一天浪费在上面的时间可能比工作的时间都还长。我们在平时刷抖音、快手的时候,有时候会看到一些有趣好玩的视频,就会想到保存下来分享给别人,但保存的视频很多都会保留有作者或来源平台的logo水印。分享的时候并不想要这…查看详情
- 听歌软件哪一个比较好是免费的-哪个软件听歌最全免费
音乐——它是一种很神奇的软件,不仅可以缓解压力,还可以起到舒身养性的作用,但唯一惹人恼火的是正听到起劲的时候突然要钱。没关系,今天我推荐的app可以让你不用花钱就可以听到喜欢的歌曲啦~1.倒带倒带是一款流行国内音乐的app,支持1653同时…查看详情
- 百度网盘怎么领取1T网络*盘
百度网盘是众多互联网用户喜爱的云存储服务平台之一,它具有存储大容量的优势,可以满足用户在日常生活、办公学习等方面的存储需求。最近,百度网盘推出了免费领取1T网络*盘的活动,让用户在云存储上获得更多的空间。所以,本文将详细描述百度网盘如何…查看详情
- 标注的“起始价”不是“最终价”,电商小程序多少钱功能说了算
电商小程序多少钱并不是展示出来的价格区间说了算,在很多小程序开发服务商的页面中都可以看到非常醒目的价格,价格区间一般在几百到三四千之间。这个标注价格并不是实际的开发价格。虽然部分服务商表示功能简单的内容小程序可免费使用,功能简单的展示小程序…查看详情
- 影视版权登记 | 保护个人权益,化解影视版权纠纷
近年来,我国影视产业迅猛发展,无论是电影、还是电视剧亦或是网络剧,数量都在直线上涨,但影视版权纠纷也随之大量涌现。电影出现版权之争,电视剧引发原著小说抄袭纠纷等等,备受*。若想要保护个人权益,化解版权纠纷,最好的办法是进行影视版权登记。 图…查看详情
- 对于搜狗输入法你了解多少?搜狗输入法简介
现在很多人都会用到输入法,用来更加便捷更加时尚地去进行打字交流,很多人会喜欢也是大众都比较容易接受的就是搜狗输入法了,今天我就来给大家推荐一下搜狗输入法,希望对大家有帮助。一、简介搜狗输入法是搜狗的公司在很早之前就推出的一款输入法,这款输入…查看详情
- 国外电影票房排行榜前五,你喜欢哪部呢?
近几年来的电影深得人们的喜欢,喜欢看电影的人都会*每个电影的上映时间,然后看完还有许多的感悟,那么,我们可以选择比较优秀的电影看,因此,要知道全球电影票房排行榜是哪些。第一名《阿凡达》说起阿凡达,当时看这部电影的同学应该都参加工作了吧,这部…查看详情
- 为企业推荐五个crm系统试用版
现在大中小微企业都在开始引用crm系统,但是在企业使用crm系统之前,它们需要做一件极为重要的事情,那就是使用市场中的crm系统试用版。因为只有如此,企业最终才能选择到一款最为适合自己的crm系统。 图片来源于网络接下来,小万将会为大家推荐…查看详情
- 成都企业信息查询步骤
如何查询企业信息?一、根据企业名称查询企业信息的方法: 1、进入全国企业信用信息公示系统,网址:http://gsxt.saic.gov.cn/; 2、右边就是选择公司所在地区的选项,上面有“请选择企业机关所在地区”的字样。 假如需要…查看详情
- 好用的调色软件推荐 实用简单的调色软件
我们手机里有许多用原相机拍的照片,可是怎么拍都感觉没有那些网上的照片好看。这是因为那些拍照的人都会偷偷的给照片调色。以下这几个APP,真的是拯救了我手机里的许多没有氛围感的照片。贝贝们快下载起来吧。 1、MIX MIX的优点…查看详情
- 怎样使用代理服务器 代理服务器使用方法
curl是一个命令行下的web客户端,可以在命令行下执行常见的web访问、自动web请求等操作,下面*就给大家来详细介绍一下怎样使用代理服务器 代理服务器使用方法这一块的相关内容,希望能帮助到大家。怎样使用代理服务器 curl(cUR…查看详情
- 抠图软件怎么选呢?这几款值得试一试
通过使用抠图软件,可以让本来存在瑕疵的照片变得更加的完美,目前市场中所存在的抠图软件功能有差异,同时也会有良秀不齐的问题,在选择的时候还是要慎重的,那么抠图软件怎么选呢?下面这几个款大家不妨试一试吧。 1、光影魔术手 光…查看详情
猜你喜欢
最新文章

扫码二维码
立即领取《千元实战营销秘籍》
还可免费试用营销管理系统
*如有疑问,请随时拨打免费咨询热线:400-0033-166
邮箱:zjb@iwanshang.com
服务时间:8:30-18:00
软件企业
认定号:川RQ-2018-0216
高新技术企业
认定号:GR201951001121

关注微信公众号
和10万中小企业共同成长

扫码下载APP
享全方位服务一触即达
Copyright © 2004-2022 万商云集(成都)科技股份有限公司 版权所有
蜀ICP备12001963号-2
川公网安备 51010402000322号

快速找产品

找一找哪款产品适合您?
咨询热线:400-0033-166
-


-
电话沟通
获取方案
下载APP
官方微信
扫码下载APP
全方位服务一触即达

关注万商云集
和10万中小企共成长

TOP

企业首选的AI增效平台

400-0033-166
8:30-18:00















































注册有好礼



