如果您要创建一个像twitter这样的应用程序,那么您将如何设计消息传递系统?
专门寻找关于基本数据模型的想法,以及如何编写接收用户推文然后将其发送给所有关注者的方法?
示例:
Tweets ( tweetID, userID, message, datesend)
User (userID, ...)
Followers(userID, followerUserID)
Inbox(userID, tweetID)
上述模型是一个很好的起点吗?
您是否先插入推文,然后将消息推送到队列中。然后一个接一个地从队列中取消消息并将消息推送给其订户?
(我忽略了twitter的移动功能,只关注基于Web的功能,但我想从一开始就使用队列,以便以后可以添加其他功能)
答案 0 :(得分:8)
高可伸缩性博客has a number of articles on twitter以及它可能让您感兴趣的基础架构和变化。
答案 1 :(得分:0)
我认为twitter不会使用消息队列(数据模型中的收件箱)。我认为在Twitter中一切都是通过日期完成的。因此,每个用户都有一个“上次查看日期”,并通过在最后查看日期之后查找所有订阅的推文来创建收件箱/邮件队列。
因此,要修改数据模型,请删除收件箱并将最后一个视图日期列添加到用户。
此外,我希望跟随者信息不会存储为跟随用户的人,而是存储给用户关注的用户。当然它可以两种方式存储,但这对我来说似乎更有意义。