2012-07-12 114 views
2

這個問題是貫穿整個設計方法的各種事情,你會在你的web應用程序中做這樣的事情,如果你在推特上跟隨數百萬人並且當你檢查最新的20條推文讓你在最短的時間內找到它,並減少對資源的負擔。這是一個關於整個堆棧的開放式設計問題。在twitter上查找來自百萬人的20條最新推文

我的回答不完整的(因爲我是不能完全回答這個問題),因爲我們正在談論數百萬用戶的

  1. 那麼我們就必須進行分片數據庫,根據用戶的地理位置,這答案沒有被接受,因爲在twitter中你確實不跟隨同一地點的人。 有什麼更好的方法可以實現?

  2. 由於大多數最新的20條推文是最重要的,那麼每個用戶都會維護一個緩存(鏈接列表),該緩存根據他們到達的時間擁有最新的推文。 這也沒有被接受。

一般來說,我在這些類型的設計問題上很薄弱,想知道如何去解決它們?

+0

只是如此你知道。我認爲緩存是實現這一目標的最佳途徑之一。由於您已經關注了數百萬人,因此爲單個用戶緩存的額外數據是微不足道的。而且緩存的速度更快,因爲當有人發推文時,推文只能在每個人的緩存中容納一次,而不是每次請求最新的20條推文。 – 2012-08-20 10:46:55

回答

0

Twitter已經發展了好幾年,我相信它是最複雜的數據系統之一。在這樣一個複雜的系統中,可能會針對不同類型的用戶進行許多優化(具體取決於他們的推特頻率,關注者和關注者的數量)。

追隨數百萬人的用戶無疑是一種非常特殊的人,可能不會太多。我認爲對於這些用戶來說,一個明智的設計就是在您的關注發佈每次推文時將您的時間線數據更新到緩存中,然後將舊文件存檔。因此,每當您要求您的時間表時,它都會立即向您返回緩存。

以上只是使系統爲您工作的最簡單直接的方法。事實上,在設計時必須考慮更多措施,例如有多少用戶關注數百萬人,這些用戶刷新頻率如何等。

相關問題