如果您要创建一个像twitter这样的应用程序,那么您将如何设计消息传递系统?
特别是寻找关于基本数据模型的想法,以及如何编写接收用户推文然后将其发送给所有关注者的方法?
例:
Tweets ( tweetID, userID, message, datesend)
User (userID, ...)
Followers(userID, followerUserID)
Inbox(userID, tweetID)
Run Code Online (Sandbox Code Playgroud)
上面的模型是一个很好的起点吗?
您是否先插入推文,然后将消息推送到队列中.然后一个接一个地从队列中取出一条消息并将消息推送给其订户?
(我忽略了twitter的移动功能,只关注基于Web的功能,但我想从一开始就使用队列,以便以后可以添加其他功能)
我不认为 Twitter 使用消息队列(数据模型中的收件箱)。我认为 Twitter 中的一切都是通过日期完成的。因此,每个用户都有一个“上次查看日期”,并且收件箱/消息队列是通过查找上次查看日期之后所有订阅的推文来创建的。
因此,要修改您的数据模型,请删除收件箱并向用户添加上次查看日期列。
另外,我希望关注者信息不会存储为谁关注用户,而是存储为给定用户正在关注哪些用户。当然,它可以以两种方式存储,但这对我来说似乎更有意义。