我需要为与许多流行的社交网络平台类似(相同)的系统构建活动源(流?更准确的“生命流”。)。我最初的尝试是使用 RDBMS,但由于需要大量的 JOIN,我很快放弃了这个想法。在寻找其他可能(和更适合)的方法时,我偶然发现了以下帖子:
接受使用消息队列的建议,我花了一些时间研究 RabbitMQ 及其 PubSubHubbub 协议。我假设了以下方法:
1)每个用户都有一个“主题”
2)其他用户订阅该主题
3)当用户执行某些操作时,会发布一条消息,然后将其关联(解析引用)、格式化(人性化语言、链接等)。 ) 并使用 PHP 脚本聚合(X、Y 和 Z 已在帖子 P 上发表评论)。
但是,我仍然必须浏览每条消息并对其进行处理(除非我的方法完全错误)。那么,将所有内容存储在 RDBMS 和使用消息队列(PubSubHubbub 协议的实现除外)之间有什么区别?
有没有更有效的方法来构建这样一个系统?(如果有,请注明)
欢迎评论/建议/批评。:)
先感谢您!
PS:有一篇关于 FriendFeed 如何实现它的有趣文章(http://bret.appspot.com/entry/how-friendfeed-uses-mysql)。但是,我觉得“黑客”将 MySQL 推出了它的舒适领域(这只是关系数据,使用没有关系数据的 RDBMS 有什么意义?)
PPS:我看到的另一个使用消息队列的问题(也许是因为我是这项技术的新手)是,一旦消息被“消费者”获取,它就会从队列中删除,但是,我希望它持续存在任意时间。