我只是想知道facebook可以发布多少个数据库查询来呈现用户的主页。有没有人对facebook DB的设计有所了解。我听说它运行MySql,有数千个副本加上比DB服务器更多的内存缓存服务器。
facebook数据是否会被粉碎?
如果是,它会转到每个分片并搜索我朋友的最新更新。在最坏的情况下,如果我有100个朋友,并假设facebook有101个分片,那么我的朋友可能会使用不同的分片。 facebook怎么可能处理这个?
如果有人可以向我提供“如何为社交网站设计数据库”这样的内容,我将非常感激。我只是好奇!
答案 0 :(得分:13)
Facebook正在使用LAMP structure。 Facebook的后端服务是用各种不同的编程语言编写的,包括C ++,Java,Python和Erlang,它们根据需要使用。使用LAMP Facebook使用一些技术来支持大量请求,例如
Memcache - 这是一个内存缓存系统,用于通过缓存RAM中的数据和对象来加速动态数据库驱动的网站(如Facebook),以减少阅读时间。 Memcache是Facebook的主要缓存形式,有助于缓解数据库负载。拥有一个缓存系统可以让Facebook在调用您的数据时尽可能快。
Thrift (protocol) - 它是一个轻量级的远程过程调用框架,用于可扩展的跨语言服务开发。 Thrift支持C ++,PHP,Python,Perl,Java,Ruby,Erlang等。
Cassandra (database) - 这是一个数据库管理系统,旨在处理分散在许多服务器上的大量数据。
HipHop for PHP - 它是PHP脚本代码的源代码转换器,用于节省服务器资源。 HipHop将PHP源代码转换为优化的C ++。执行此操作后,它使用g ++将其编译为机器代码。
如果我们详细介绍,那么回答这个问题会更长。我们可以通过以下帖子了解更多信息:
答案 1 :(得分:3)
在本网站上,您可以找到有关这些大型互联网公司及其技术结构的大量详细信息:
答案 2 :(得分:0)
添加@Somnath Muluk的答案 - Facebook使用其他一些技术,如Hadoop等。
有关详细信息,请参阅以下链接:
http://www.quora.com/Facebook-Engineering/What-is-Facebooks-architecture
希望它有所帮助。
答案 3 :(得分:0)
零。平均而言,就是这样。具有大量用户(如Facebook)的高度互联网络只有在经常显示的页面完全从ram中运行时才能有效运行。几乎所有数据都应该在memcache中。