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