在线视频王者YouTube的技术哲学
来源:互联网 发布:hd软件市场 编辑:程序博客网 时间:2024/04/28 12:50
http://cloud.csdn.net/a/20120409/2804327.html
导读:许多团队都使得他们的基础架构越来越复杂,YouTube团队却尽量保持简单的风格。正是凭借简单的技术哲学,才成就了YouTube在线视频王者的盛名。
如果你想构建一个可以承载日访问量40亿次的网站,YouTube有许多值得借鉴的地方。本文是YouTube的工程师Mike Solomon在PyCon(PyCon是Python开源社区的开发者年度盛会)上关于YouTube扩展性演讲的摘要,相信会对大家有所启发。
许多团队都使得他们的基础架构越来越复杂,YouTube团队却尽量保持简单的风格。他们使用Python作为主要开发语言,使用MySQL开源数据库,并一直使用Apache作为Web服务器。对一个如此庞大的站点而言,许多重要特性都源于点点滴滴的Python代码。
这并不意味着YouTube不追求创新,他们更追求一种技术哲学,而非炒作。究竟是什么成就了世界上最大的视频网站?敬请阅读。
惊人的数字
- 日访问量40亿次
- 每分钟上传60小时的视频
- 超过3.5亿终端访问
- 利润是2010年收入的双倍
- 视频的数量上升了9个数量级,开发人员却只上升了2个数量级
- 一百万行Python代码
软件架构
- Python:Python是YouTube的主要编程语言。
- Apache:YouTube一直使用Apache,每次HTTP请求都经由Apache。
- Linux:Linux是构建YouTube的基石,它有许多强大的工具,如strace何tcpdump。
- MySQL:MySQL有庞大的用户群。YouTube使用它的关系数据库特性,也使用它存储BLOB数据。
- Vitess:Vitess是由YouTube发起的一个开源项目,旨在打造高性能的MySQL前端。
- Zookeeper:分布式的锁服务器。
- Wiseguy:一个CGI Servlet容器。
- Spitfire:一个模板系统。
- Serialization formats:YouTube重写了BSON实现,速度提升了10-15倍。
关于扩展性的思考
以下虽然都不是什么新思想,但希望对你有所助益。
- 分而治之是扩展性技术的灵魂。考虑以层次化的方式完成所有的工作。这也是数据分片的症结所在。要知道如何将数据分区,以及如何将已分区的数据进行关联。总而言之,保持简单与松散的耦合非常必要。
- 充分利用Python的动态特性,构建易于扩展的软件架构。
- 近似的正确性。要相信监控系统所报告的系统运行状态。如果问题没有出现,就认为一切良好。
- 不一致的数据模型。例如,阅读评论的人和写评论的人对你刷新页面的动作会有不同的反应,但也不必完全基于事务处理进行系统设计,这会显得矫枉过正。我们依然需要不一致的数据模型。
- 分布式系统的随机性。分布式系统就如同气象系统一样,对分布式系统进行调试会存在更多的随机性。例如,缓存过期。一般情况下,服务器会将流行的视频缓存24小时。如果一旦出现缓存同时过期的情况,服务器将同时开始缓存,荷载如闻惊雷!
- 最快的函数调用就是不做任何调用。合理设计事务处理发生的间隔和次数。
- 仔细观察API,并做到心中有数。如何定义输入、输出?所有的函数调用本质上都是围绕数据发生的,那在函数调用之后,又会发生什么?
- 在Python中运用RPC重定向。程序员是代码的构建者,因此要做好约定。如果代码不幸失败了,还可以从RPC输出中追查原因。
- 没有完美的组件。一个组件的运行周期可能持续1-6个月,具体多久,谁也说不清。随着时间的推移,我们会用Python和C重写一些东西,这证明你正在淘汰旧的组件,当你观察到一个新组件出现的时候,它诞生了。
- 没有人了解整个系统的运作机制。因此,我们需要定义组件。视频转码和视频搜索截然不同,建立良好的数据规范非常重要。
- 效率与扩展性并重。最有效率的是用C实现进程,但这样的方式缺乏扩展性。
- 着眼于宏观层面、组件及其失败的原因。使用RPC是否明智?内联如何?进行分解研究,也许会发现不同之处。
- 重视算法。与其绞尽脑汁用Python来实现高效的算法,不如用它做些更有实用价值的事。在这方面,C语言有它的优势。
- 我们很少从事面向对象设计。我们使用了大量的名称空间,使用类来组织数据,但极少面向对象。
- 我乐意用下面的词汇来形容我们的代码树:简单、实用、优雅、正交、可组合,这是我们的追求。
总结
YouTube解决问题的哲学只有一个词:简单。许多YouTube的产品最初只是源于一个简单的Python脚本。这正是应了我们的一句老话,不积跬步,无以至千里;不积小流,无以成江海。(张志平/编译)
原文链接:7 Years of YouTube Scalability Lessons in 30 Minutes
- 在线视频王者YouTube的技术哲学
- YouTube 在线视频下载
- p2p在线视频的技术站点
- 在线视频转换器 youtube下载器
- 技术的哲学思考
- 谁是区块链技术的新王者?
- 谁是区块链技术的新王者?
- YouTube在线视频下载 网站地址,真乃神器
- YouTube技术架构
- YouTube采用怎样的网站技术?(较早期)
- 区块链技术能否挑战YouTube、Netflix的地位?
- android 在线视频的播放
- 站在哲学的角度看,技术的本质是什么?
- 在线视频
- 基于neatupload和ffmpeg转码技术的在线视频系统设计与实现(一)。
- 基于neatupload和ffmpeg转码技术的在线视频系统设计与实现(一)
- YouTube开放基础技术架构 让用户建自家YouTube
- 在线视频,在线电影使用p2p技术
- 计算机
- 使用 Java Content Repository 技术打造企业级内容管理系统
- 解除svn控制!!!!!
- GL 游戏算法(附源码)
- Java5 多线程实践
- 在线视频王者YouTube的技术哲学
- 【算法导论】排序算法 三
- android+unity游戏开发基础之场景的切换
- hdu 1150二分图最小顶点覆盖
- 模板PDF报表导出的技术准备
- 软件项目管理中的几个误区
- 窗口透明样式示例
- c++ release() 函数
- 创业36条军规