7

我只是想知道 Facebook 可能会发出多少个数据库查询来呈现用户的主页。有人对facebook DB的设计方式有一些想法吗?我听说它运行 MySql 并且有数千个副本加上比 DB 服务器更多的 memcache 服务器。

facebook 数据是分片的吗?

如果是,它会转到每个分片并搜索我朋友的最新更新。在最坏的情况下,如果我有 100 个朋友并假设 facebook 有 101 个分片,那么我的每个朋友都有可能在不同的分片中。facebook如何处理这个问题?

如果有人可以向我提供有关“如何为社交网络网站设计数据库”之类的 seom 提示或指针,我将不胜感激。我只是好奇!

4

4 回答 4

13

Facebook 正在使用LAMP 结构。Facebook 的后端服务是用各种不同的编程语言编写的,包括 C++、Java、Python 和 Erlang,并根据需要使用它们。借助 LAMP,Facebook 使用了一些技术来支持大量请求,例如

  1. Memcache - 它是一种内存缓存系统,用于通过在 RAM 中缓存数据和对象来加速动态数据库驱动的网站(如 Facebook),以减少读取时间。Memcache 是 Facebook 的主要缓存形式,有助于减轻数据库负载。拥有一个缓存系统可以让 Facebook 在调用您的数据时尽可能快。

  2. Thrift (protocol) - 它是一个轻量级的远程过程调用框架,用于可扩展的跨语言服务开发。Thrift 支持 C++、PHP、Python、Perl、Java、Ruby、Erlang 等。

  3. Cassandra(数据库) ——它是一个数据库管理系统,旨在处理分布在许多服务器上的大量数据。

  4. HipHop for PHP - 它是 PHP 脚本代码的源代码转换器,旨在节省服务器资源。HipHop 将 PHP 源代码转换为优化的 C++。完成此操作后,它使用 g++ 将其编译为机器码。

如果我们更详细,那么对这个问题的回答会更长。我们可以从以下帖子中了解更多:

  1. 脸书是如何运作的?
  2. 数据管理,Facebook 风格
  3. Facebook 数据库设计?
  4. Facebook wall 的数据库结构
  5. Facebook“点赞”数据结构
于 2012-08-01T18:43:40.523 回答
3

在这个网站上,您可以找到有关这些大型互联网公司及其技术结构的许多详细信息:

http://highscalability.com/

于 2012-07-02T07:03:13.923 回答
0

添加到@Somnath Muluk 的答案 - Facebook 很少使用其他技术,如 Hadoop 等。

有关详细信息,请参阅以下链接:

http://www.quora.com/Facebook-Engineering/What-is-Facebooks-architecture

脸书架构

希望能帮助到你。

于 2012-08-03T06:31:12.223 回答
0

零。平均而言,就是这样。一个拥有大量用户的高度互联网络,如 Facebook,只有在经常显示的页面完全耗尽内存时才能有效运行。几乎所有数据都应该已经在内存缓存中。

于 2012-08-03T21:59:48.873 回答