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

时间:2010-02-22 15:13:52

标签: java twitter

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

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

示例:

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

Inbox(userID, tweetID)

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

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

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

2 个答案:

答案 0 :(得分:8)

高可伸缩性博客has a number of articles on twitter以及它可能让您感兴趣的基础架构和变化。

答案 1 :(得分:0)

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

因此,要修改数据模型,请删除收件箱并将最后一个视图日期列添加到用户。

此外,我希望跟随者信息不会存储为跟随用户的人,而是存储给用户关注的用户。当然它可以两种方式存储,但这对我来说似乎更有意义。

相关问题