8

我正在尝试设计一个类似于 Twitter 时间线的系统,但我无法理解如何在保持高效的同时从如此多的关注者那里获取更新。假设我在 Twitter 上关注了 1000 人。当我转到我的提要时,它如何知道要显示哪些推文?这就是我的想法,但它似乎效率极低且不太可能:

You have 10,000 friends.
In a for loop, loop through each friend, getting their latest 
  status updates since their last update. 

但循环访问 10,000 个朋友似乎很荒谬。我无法想象他们会怎么做。还是会是这样的:

Someone I am following posted a tweet. That tweet is inserted in 
  an array containing the tweets of all people I am following.

但这似乎很奇怪,如果我关注了一个拥有 20,000 条推文的新人,那么我的数组中将插入 20,000 条推文,如果那个人有数百万的关注者,那么同一组推文就有 100 万 X 20,000 个副本. 所以这似乎也不太可能。

任何人都知道他们怎么可能做到这一点?

4

2 回答 2

3

我建议您查看twissandra 项目 ,他们使用cassandra(一个 nosql 数据库)实现了 twitter 的所有基本功能。据说 twitter不再使用它来发布推文

旧的实现可以参考这里

于 2012-09-21T20:02:38.507 回答
2

我制作了一个关于这个主题的视频,它解释了 twitter 的完整系统设计 https://www.youtube.com/watch?v=KmAyPUv9gOY

于 2018-02-15T17:08:09.923 回答