你会如何设计一个类似Twitter的消息系统,如何设计消息传递系统?

use*_*475 8 java twitter

如果您要创建一个像twitter这样的应用程序,那么您将如何设计消息传递系统?

特别是寻找关于基本数据模型的想法,以及如何编写接收用户推文然后将其发送给所有关注者的方法?

例:

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

Inbox(userID, tweetID)
Run Code Online (Sandbox Code Playgroud)

上面的模型是一个很好的起点吗?

您是否先插入推文,然后将消息推送到队列中.然后一个接一个地从队列中取出一条消息并将消息推送给其订户?

(我忽略了twitter的移动功能,只关注基于Web的功能,但我想从一开始就使用队列,以便以后可以添加其他功能)

mat*_*t b 8

高可伸缩性博客在twitter有很多文章,它的基础设施和随着时间的推移可能会让您感兴趣.


Hog*_*gan 0

我不认为 Twitter 使用消息队列(数据模型中的收件箱)。我认为 Twitter 中的一切都是通过日期完成的。因此,每个用户都有一个“上次查看日期”,并且收件箱/消息队列是通过查找上次查看日期之后所有订阅的推文来创建的。

因此,要修改您的数据模型,请删除收件箱并向用户添加上次查看日期列。

另外,我希望关注者信息不会存储为谁关注用户,而是存储为给定用户正在关注哪些用户。当然,它可以以两种方式存储,但这对我来说似乎更有意义。