已经使用PHP已经有一段时间了,我想知道整个"消息队列"是什么.我们以facebook为例.我可以更新我的状态但是我必须向所有朋友显示状态更新(假设我有3000个关注者).如果有评论则需要更多工作,并且必须通过电子邮件通知所有留下评论的朋友.通过我看到的示例,似乎所有消息队列都采用"消息"(我的状态更新)并将其放入一些临时空间(文件系统或数据库表).然后我有一个cron工作,把它拉出来并更新我的表.
话虽如此,我该如何处理这些数据呢?我想我对这将如何真正帮助我感到困惑.如何将以下函数转换为消息队列,然后安排函数以后运行?
1 - 更新我的状态2 - 现在在我的页面和所有朋友中发布它.3 - 如果留下评论,现在将最新评论通过电子邮件发送给"订阅"该评论的人.
我的问题是,我该如何操纵这些数据?我只是插入"注释"然后有一个"工作",将该注释拉出来并将其插入一个处理它的函数?
这是我打算研究的一个例子.
http://www.freeopenbook.com/php-hacks/phphks-CHP-5-SECT-18.html
提前致谢.
我的问题是,如何操纵这些数据?我是否只是插入“注释”,然后有一个“工作”将该注释拉出并将其插入到处理它的函数中?
确切地。
在 Facebook 页面上发布状态更新可能不涉及消息队列 - 我实际上不知道他们的具体设计,但我猜更新的数据只是在用户加载页面时通过查询按需提供。(除非 Facebook 有单独的流程来非规范化状态更新数据。)1
相比之下,发送状态更新电子邮件通知非常适合消息队列。
典型的实现涉及将新消息(通常是最小的,可能只是您的用户 ID)写入特定的消息队列 - 可能是“EmailStatusUpdateNotifications”队列。
然后,另一个进程将消息从队列中取出,并确切地知道如何处理它们。专用于发送状态更新电子邮件消息的过程将使用用户 ID(消息内容)来加载您当前的状态和朋友的电子邮件地址列表,构建电子邮件消息并发送它们。
1事实证明,您可以在《为什么 Facebook、Digg 和 Twitter 如此难以扩展?》中找到很多有关 Facebook 架构的好信息。在高可扩展性。