我正在尝试设计一个类似于Twitter时间轴的系统,但我无法理解如何在保持高效的同时从众多粉丝那里获得更新。假设我在推特上关注了1000人。当我转到我的Feed时,它如何知道哪些推文给我看?这就是我的想法,但它似乎非常低效且不太可能:
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条推文,如果那个人拥有数百万的粉丝,那么就有一百万个X 20,000个相同的副本一组推文。所以这似乎也不太可能。
任何人都有任何想法如何做到这一点?
答案 0 :(得分:3)
我建议你查看twissandra project 他们使用cassandra(一个nosql数据库)实现了twitter的所有基本功能。据说twitter是no longer using it for tweets。
可以查阅旧的实施here
答案 1 :(得分:1)
我制作了一个关于这个主题的视频,它解释了twitter的完整系统设计 https://www.youtube.com/watch?v=KmAyPUv9gOY