作为全球最大的社交媒体,脸书的技术一直是引领着时尚潮流,无论是前端的reactjs,还是移动端的Origami,亦或是后端的Presto,脸书开源的项目总能让很多人兴奋不已。
很多人都听过脸书起步创业的故事,那个时候扎克伯格使用php搭建了facebook,从此脸书就迅速占领了校园,最后它走向了全球。
脸书虽然采用的是php,但是那是经过修改的php,它使用了hhvm进行了编译,效率大大提升。
脸书虽然也使用msyql,但是那也是经过修改的版本,它经过了优化,并且它只是作为数据的存储使用,更多的时候它们使用的是memcached内存数据库。
脸书的操作系统使用的也是linux,不过这也是经过优化的版本,性能更加优异。
再简单的问题当用户量巨大的时候,也会变成复杂的问题,为什么大数据会吸引无数公司去研究,因为数据量变多的时候,它就会变得异常复杂。
memcached
到目前为止,Memcached是互联网上最著名的软件之一。这是一个分布式内存缓存系统,Faceebook将它用作Web服务器和MySQL服务器之间的缓存层。多年来,Facebook对Memcached及其周围的软件进行了大量优化。
Facebook可以在任何时间点运行数千个Memcached服务器,其中包含数十TB的缓存数据。它可能是世界上最大的Memcached集群。
HHVM
与在服务器上本地运行的编译语言代码相比,PHP是一种脚本语言,相对而言速度较慢。 HipHop将PHP转换为C ++代码,然后可以对其进行编译以获得更好的性能。由于Facebook严重依赖PHP来提供内容,因此这使得Facebook可以从其Web服务器中获得更多收益。
Haystack
它是Facebook的高性能照片存储/检索系统(严格来说,Haystack是对象存储,因此不一定必须存储照片)。它有大量的工作要做。
Facebook上有超过几千亿张上传的照片,并且每张照片都以四种不同的分辨率保存,因此产生了海量照片。
而通过Haystack则可以进行照片的快速查询。
BigPipe
BigPipe是Facebook开发的动态网页服务系统。
Facebook使用它来为每个网页中的各个部分(称为“小页面”)提供服务,以获得最佳性能 。 例如,聊天窗口是分别检索的,新闻提要是分别检索的,依此类推。可以并行检索这些pagelet,这是提高性能的地方,即使页面的某些部分被停用或损坏,它也可以为用户提供可以正常工作的站点。
Cassandra
Cassandra是没有单点故障的分布式存储系统。这是一种nosql数据库,具有高效的读取效率。
很多时候facebook和使用它来代替Redis。
Hadoop和Hive
Hadoop是一种开源的map-reduce实施,可以对大量数据进行计算。
Facebook将其用于数据分析(众所周知,Facebook拥有大量数据)。
Hive起源于Facebook内部,可以对Hadoop使用SQL查询,从而使非程序员更易于使用。
Thrift
Facebook使用几种不同的语言来提供不同的服务。 PHP用于前端,Erlang用于聊天,Java和C ++也用于多个地方(也许还有其他语言)。
Thrift是一种内部开发的跨语言RPC通信框架,它可以将所有不同的语言联系在一起,使它们可以相互通信。通过它Facebook保持跨语言开发变得更加容易。
未来
脸书全球有着大量的用户,面对如此多的用户,它们无论是对产品的稳定还是对产品的性能都有着严格的要求。然而,脸书也有着非常多优秀的工程师,他们不断用自己的智慧来驱动脸书向更好的方向发展。