gpt4 book ai didi

algorithm - facebook 的状态更新机制背后的设计和架构是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:19:51 25 4
gpt4 key购买 nike

我正计划创建一个社交网络,但我不太了解 facebook 的状态更新模块是如何设计的。希望我能在这里找到一些帮助。在算法和数据结构层面,在社交网络中创建状态更新机制的最有效方法是什么?

对所有 friend 进行全表扫描,然后对他们的更新进行排序是非常幼稚且代价高昂的。我们是否使用某种基于散列或其他机制的机制?请告诉我。

P.S:我不是在谈论他们的 EdgeRank 算法,而是在谈论基本状态更新。他们如何从数据库中查找和获取它们?

在此先感谢您的帮助!

最佳答案

这是一个great presentation这回答了你的问题。具体答案在 55:40 分左右出现,但我建议您观看整个演示,以了解该解决方案如何融入整个架构。

简而言之:

  1. 特定服务器(“叶”)存储特定用户的所有提要项目。因此,您每个 friend 的数据都完全存储在特定的目的地。
  2. 当您想查看新闻提要时,其中一个聚合服务器会向您 friend 的所有叶服务器发送请求并对结果进行排名。聚合器根据每个 friend 的用户 ID 知道将请求发送到哪些服务器。

当然,这已经非常简化了。这之所以有效,是因为所有这些都是 memcached,系统旨在最大限度地减少延迟,一些排名是在包含 friend 的提要项目的叶服务器上完成的,等等。

您真的不想访问数据库以使其以合理的速度运行。 FB 主要使用 MySql 作为键值存储; JOINing tables 在他们的规模上是不可能的。然后他们将内存缓存服务器放在数据库和应用程序服务器的前面。

话虽如此,在出现缩放问题之前不要担心它们(当然,除非您是为了好玩而担心它们。)在第一天,缩放是您的问题中最少的。

关于algorithm - facebook 的状态更新机制背后的设计和架构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com