2010-02-22 73 views
8

如果您要創建一個像twitter這樣的應用程序,您將如何設計消息傳遞系統?你會如何設計一個像消息系統一樣的twitter,如何設計消息系統?

在基本數據模型中特別尋找想法,以及如何編寫採用用戶推文的方法,然後將其發送給所有追隨者?

例如:

Tweets (tweetID, userID, message, datesend) 
User (userID, ...) 
Followers(userID, followerUserID) 

Inbox(userID, tweetID) 

在上述模型的良好起點?

您是否首先插入推文,然後將消息推送到隊列中。然後一個接一個地從隊列中取消消息並將消息推送給訂閱者?

(我忽略的Twitter的移動功能,只是集中於基於Web的功能,但我想用一個隊列從一開始就這麼一個可以添加後其他功能)

回答

0

我不認爲嘰嘰喳喳使用消息隊列(數據模型中的收件箱)。我認爲在twitter中,所有事情都是通過日期完成的。因此,每個用戶都有一個「上次查看日期」,並通過在上次查看日期之後查找所有訂閱的推文來創建收件箱/消息隊列。

因此,要修改您的數據模型,請移除收件箱並將最後一個查看日期列添加到用戶。

此外,我希望追隨者的信息不會存儲爲誰跟隨一個用戶,而是作爲一個給予用戶遵循哪些用戶。當然,它可以存儲兩種方式,但這似乎對我更有意義。

+0

消息隊列和收件箱是2個獨立的東西。 – user275475 2010-02-22 15:25:35

+1

@mrbux:你在開玩笑吧?你給我一個-1是因爲你對問題的說明暗示你在想這個問題是錯的?哇,這似乎並不符合SO的精神。你的數據庫設計到底是什麼?收件箱的功能是什麼?你爲什麼在你的問題中列出它? – Hogan 2010-02-22 19:21:35