想要构筑一个大型系统,如果你不像Facebook那么有钱、任性还能折腾,如果你的团队规模有限,如果你想要节约成本,如果你想要降低人员流动带来的影响,如果你要减小HR的压力,如果你希望员工可以在工作告一段落后可以在不同的项目/团队间进行转岗,那么尽量让团队使用少的技术/语言是一个很好的选择,PHP会是这个不二之选吗?
我们来看看号称“一直”使用PHP做为“主要”开发语言的Facebook这些年都折腾出了什么:
- HipHop 将PHP代码转换为C++代码,之后由C++编译器进行编译,代码不再运行在PHP虚拟机上。2010年Facebook性能问题开始凸显时,已经拥有数百万行的PHP代码,上千名PHP工程师,如果改用其他语言(非不想实不能!)根本不现实,所以成立了一个小组花费18个月开发了HipHop,这种事情显然不是什么公司都能干的。
- HHVM : 准备替代HipHop的PHP虚拟机技术,为了纪念早先的PHP代码转换工具HipHop ,命名为HipHop Virtual Machine
- Hack: 可以在HHVM虚拟机上运行的PHP改进语言,实现了一些静态语言特性
- Cassandra: 分布式存储系统 Java 已开源
- Scribe: 日志系统 C/C++ 已开源
- Haystack/F4: 高性能图片存储与检索系统 C/C++ 闭源
- Thrift: Facebook为了PHP可以调用后端服务开发的跨语言RPC框架,事实上只有Java版本的实现最完整,PHP使用的是C++的版本做了个简单的API引入功能有限,想要进行扩展难免要使用C++进行开发,Thrift编译器为C++实现 已开源
Facebook使用的其他不是自己开发的开源技术就不多说了,至少如果需要在Hadoop下用MapReduce进行大数据统计处理,就不要指望可以用PHP了。
最后引用文章《看三名工程师如何重建Facebook基础》的最后几段:
在有了“HipHop虚拟机”以后,Facebook能以大多数开发者永远都想象不到的速度运行PHP代码。但是,仍旧有人质疑为何这家公司要这么走极端。长期开发者、编程权威人士大卫·波拉克(David Pollack)就不认同Facebook坚持使用PHP语言的作法。“PHP语言用来构建一个应急网站是最好的。对我来说,Facebook能利用这种语言构建像Facebook网站那样强大而灵活的网站确实令人印象深刻,但我不认为PHP是构建一个网站的最好方法,这就像是住在新泽西州的人非要把这个州称作‘花园州’一样。”
就连亚当斯也承认,虽然他曾宣称动态语言能让开发者更具生产力,但这种说法在某些情况下也值得商榷。埃文斯也承认,虽然PHP这样的语言或许能在短期内提高生产力,但从长期来看则会带来更多困难。
当然,Facebook之所以还在坚持使用PHP语言,在很大程度上是因为用另一种语言来重新编写整个网站的代码是一项更加庞大的任务。Facebook将此称为“遗留问题”(The Legacy Problem)。“到最后,总有一天网站的规模会大到不重写不行的地步。”帕洛斯基说道。
相关推荐
Facebook PHP SDK 4.0
Buck - 一个快速构建系统,鼓励在各种平台和语言上创建小型,可重用的模块。
facebook架构
HHVM即HipHop Virtual Machine,目前是3.0版本,出自Facebook,它先将PHP和Hack程序编译为中间字节码,然后通过just-in-time (JIT)编译器将字节码动态翻译为x64机器代码,应用上了非常多的编译优化技术。...
Facebook 出品的开源 App 构建工具,一款能够为 App 构建过程与多平台运行提供更快构建、更好文档并兼容 Xcode 的构建工具,超快的增量构建和构建频率;支持构建 Xcode 项目和 workspace;支持 Swift 应用与框架;...
Buck 是 Facebook 的开源 Android 源码构建系统。Buck 的设计目的是用于从一个... 让你的构建依赖生效 Buck 是高性能的构建系统,关注的是速度,Facebook 中使用发现 Buck 的速度是 Ant 的两倍! 标签:Buck
Laravel开发-facebook-php-sdk-laravel Facebook PHP SDK与Laravel配合使用的包装。
The facebook php sdk example
Facebook推出的可声明式构建高效UI的库。.zip,在android上构建高效ui的声明性框架。
facebook效应, 让这个世界上的人们自己组织起来 北京大学新闻与传播学院副教授胡泳 Facebook是一种现象,它的创始人和首席执行官马克.扎克伯格是另外一种现象。 Facebook现象 Facebook是什么?柯克帕特里克的这本...
Laravel开发-facebook 用于Laravel 4的Facebook PHP SDK包
Facebook早期架构设计以及缓存系统
Facebook Twine集群管理系统
为什么在facebook交友会更容易?facebook与传统的BSP(BlogServiceProvider)到底有什么不同?是因为它有横竖两个导航吗?是因为它有个主人信息的聚合页面吗?Facebook为什么成功?又有哪些不足?Facebook商业上的...
一个轻松构建文本布局的Android库,Facebook开源的一个 Andriod 文本处理的库
运行以下命令: composer require facebook/graph-sdk 请注意,将Facebook SDK与 6.x一起使用时会出现问题。 php-graph-sdk v5.x仅与Guzzle 5.x兼容。 但是, 。升级到v5.x 从v4.x升级? Facebook PHP SDK v5.x引入...
Laravel开发-laravel-facebook-php-ads-sdk 用于Laravel的Facebook广告API SDK
社交网站(例如Facebook)中的用户越来越多地收到陌生人的朋友请求。 这项研究研究了五种人格特质(神经学,外向,开放,自立,尽职与乐于助人)以及陌生人的性别对Facebook用户接受(或忽略)陌生人朋友请求的决定...
这本书的书名——《打造Facebook:亲历Facebook爆发的5年》很嚣张,谁有资格可以说这句话呢,当然,扎克伯格最有资格,但他不会亲自来告诉你,至少从目前的情况来看,近几年都不大可能。而且,这不是一个人的公司。...