1703952634
10.1.4 最佳实践案例:YouTube的技术哲学观:回归初心
1703952635
1703952636
案例10-3 YouTube的技术哲学观:回归初心
1703952637
1703952638
YouTube是一个可以承载日访问量40亿次的网站,在线视频王者。分析其技术架构,却发现直接、简单、适度,这跟YouTube技术团队倡导的“回归初心”的技术哲学思想是有紧密联系的,当一个技术团队中吸纳了越来越多的聪明人,他们最容易犯的错误是把简单问题复杂化,而最难的事情恰恰是把复杂的问题简单化,抽丝剥茧,返璞归真,回到最初做这个事情时的想法和状态。
1703952639
1703952640
许多团队都使得他们的基础架构越来越复杂,YouTube团队却尽量保持简单的风格。他们使用Python作为主要开发语言,使用MySQL开源数据库,并一直使用Apache作为Web服务器。对一个如此庞大的站点而言,许多重要特性都源于点点滴滴的Python代码。
1703952641
1703952642
这并不意味着YouTube不追求创新,他们更追求一种技术哲学,而非炒作。究竟是什么成就了世界上最大的视频网站?我们先来看一组数字:日访问量40亿次,每分钟上传60小时的视频,超过3.5亿终端访问,利润是2010年收入的双倍,视频的数量上升了9个数量级,开发人员却只上升了2个数量级,一百万行Python代码。
1703952643
1703952644
在软件架构方面,Python是YouTube的主要编程语言;YouTube一直使用Apache,每次HTTP请求都经由Apache;Linux是构建YouTube的基石,它有许多强大的工具,如strace、tcpdump;MySQL有庞大的用户群,YouTube使用它的关系数据库特性,也使用它存储BLOB数据;Vitess是由YouTube发起的一个开源项目,旨在打造高性能的MySQL前端;Zookeeper:分布式的锁服务器;Wiseguy:一个CGI Servlet容器;Spitfire:一个模板系统;Serialization formats:YouTube重写了BSON实现,速度提升了10~15倍。
1703952645
1703952646
关于扩展性的思考,“分而治之”是扩展性技术的灵魂。考虑以层次化的方式完成所有的工作。这也是数据分片的症结所在。要知道如何将数据分区,以及如何将已分区的数据进行关联。总而言之,保持简单与松散的耦合非常必要。要相信监控系统所报告的系统运行状态,如果问题没有出现,就认为一切良好。例如,阅读评论的人和写评论的人对你刷新页面的动作会有不同的反应,但也不必完全基于事务处理进行系统设计,这会显得矫枉过正。
1703952647
1703952648
分布式系统的随机性。分布式系统就如同气象系统一样,对分布式系统进行调试会存在更多的随机性。例如缓存过期,一般情况下,服务器会将流行的视频缓存24小时,如果一旦出现缓存同时过期的情况,服务器将同时开始缓存,将产生负载风暴。
1703952649
1703952650
在Python中运用RPC重定向。程序员是代码的构建者,因此要做好约定,如果代码不幸失败了,还可以从RPC输出中追查原因。
1703952651
1703952652
没有完美的组件。一个组件的运行周期可能持续1~6个月,具体多久,谁也说不清。随着时间的推移,我们会用Python和C重写一些东西,这证明你正在淘汰旧的组件,当你观察到一个新组件出现的时候,它诞生了。
1703952653
1703952654
没有人了解整个系统的运作机制。因此,我们需要定义组件。视频转码和视频搜索截然不同,建立良好的数据规范非常重要。
1703952655
1703952656
效率与扩展性并重。最有效率的是用C实现进程,但这样的方式缺乏扩展性。
1703952657
1703952658
着眼于宏观层面、组件及其失败的原因,使用RPC是否明智?内联如何?进行分解研究,也许会发现不同之处。
1703952659
1703952660
重视算法。与其绞尽脑汁用Python来实现高效的算法,不如用它做些更有实用价值的事,在这方面,C语言有它的优势。
1703952661
1703952662
YouTube技术团队,很少从事面向对象设计,我们使用了大量的命名空间,使用类来组织数据,但极少使用面向对象。
1703952663
1703952664
YouTube解决问题的哲学是:简单、回归初心。许多YouTube的产品最初只是源于一个简单的Python脚本。这正是应了我们的一句老话:“不积跬步,无以至千里;不积小流,无以成江海。”
1703952665
1703952666
1703952667
1703952668
1703952670
技术管理之巅:如何从零打造高质效互联网技术团队? 10.2 技术管理之巅
1703952671
1703952673
10.2.1 写在结尾的话:没有比脚更长的路,没有比人更高的山
1703952674
1703952675
技术管理之路,可以用山高路远来形容,在攀登技术管理之巅的道路上,我们需要勇气、智慧、勤奋和方法,当然还离不开志同道合的朋友们。
1703952676
1703952677
在搁笔之前,想跟大家回顾一下前文的脉络,以便各位加深记忆,随后即可将此书束之高阁,当遇到技术管理问题的时候,再重新翻阅,启发思路。
1703952678
1703952679
第1章,我们了解了当前技术发展的趋势,主要有:互联网+、移动互联网、O2O、大数据、云计算,掌握这些技术发展趋势,有助于我们建立技术发展观,更好地在实际工作中做出判断。另外,我们还探讨了技术定位的问题,究竟是“技术引领业务”,还是“支持业务”,都要根据企业自身的文化、人员组织架构等因素决定。
1703952680
1703952681
第2章,探讨了技术与业务的融合。通过对比国内外对CTO岗位的不同认识,帮助大家理清CTO在国内的职责,明确了技术管理的目标是:使技术与业务高度融合。
1703952682
[
上一页 ]
[ :1.703952633e+09 ]
[
下一页 ]