facebook的技术栈

作为全球最大的社交媒体,脸书的技术一直是引领着时尚潮流,无论是前端的reactjs,还是移动端的Origami,亦或是后端的Presto,脸书开源的项目总能让很多人兴奋不已。

很多人都听过脸书起步创业的故事,那个时候扎克伯格使用php搭建了facebook,从此脸书就迅速占领了校园,最后它走向了全球。

facebook的技术栈

脸书虽然采用的是php,但是那是经过修改的php,它使用了hhvm进行了编译,效率大大提升。

脸书虽然也使用msyql,但是那也是经过修改的版本,它经过了优化,并且它只是作为数据的存储使用,更多的时候它们使用的是memcached内存数据库。

脸书的操作系统使用的也是linux,不过这也是经过优化的版本,性能更加优异。

再简单的问题当用户量巨大的时候,也会变成复杂的问题,为什么大数据会吸引无数公司去研究,因为数据量变多的时候,它就会变得异常复杂。

memcached

到目前为止,Memcached是互联网上最著名的软件之一。这是一个分布式内存缓存系统,Faceebook将它用作Web服务器和MySQL服务器之间的缓存层。多年来,Facebook对Memcached及其周围的软件进行了大量优化。

facebook的技术栈

Facebook可以在任何时间点运行数千个Memcached服务器,其中包含数十TB的缓存数据。它可能是世界上最大的Memcached集群。

HHVM

与在服务器上本地运行的编译语言代码相比,PHP是一种脚本语言,相对而言速度较慢。 HipHop将PHP转换为C ++代码,然后可以对其进行编译以获得更好的性能。由于Facebook严重依赖PHP来提供内容,因此这使得Facebook可以从其Web服务器中获得更多收益。

Haystack

它是Facebook的高性能照片存储/检索系统(严格来说,Haystack是对象存储,因此不一定必须存储照片)。它有大量的工作要做。

facebook的技术栈

Facebook上有超过几千亿张上传的照片,并且每张照片都以四种不同的分辨率保存,因此产生了海量照片。

而通过Haystack则可以进行照片的快速查询。

BigPipe

BigPipe是Facebook开发的动态网页服务系统。

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 ++也用于多个地方(也许还有其他语言)。

facebook的技术栈

Thrift是一种内部开发的跨语言RPC通信框架,它可以将所有不同的语言联系在一起,使它们可以相互通信。通过它Facebook保持跨语言开发变得更加容易。

未来

脸书全球有着大量的用户,面对如此多的用户,它们无论是对产品的稳定还是对产品的性能都有着严格的要求。然而,脸书也有着非常多优秀的工程师,他们不断用自己的智慧来驱动脸书向更好的方向发展。

展开阅读全文

页面更新:2024-05-04

标签:单点   分布式   缓存   效率   内存   性能   语言   版本   页面   代码   通信   服务器   照片   数据   数码   用户   技术

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top