什么是使用PHP / MySQL排队时间敏感消息的最佳方法?

时间:2010-03-22 05:04:52

标签: php mysql message-queue

我正在一个新的应用程序中构建一个SMS调用和响应系统,该应用程序通过聚合器网关接收消息,检查它是否有功能关键字(运行,停止,询问等),然后对其进行适当处理(保存到数据库) ,返回答案,或根据用户授权执行任务)。目前运行正常,因为只有少数用户,但我认为随着我们扩展它会有更多问题。我们目前正在一台DV机上运行它(mediatemple base dv)。

我的问题是:将Memcached设置为运行队列,或者运行守护进程的简单数据库逐一处理每条消息更有意义吗?我对这两者都没有多少经验,所以任何建议都会有所帮助。由于消息传递在某种程度上是时间敏感的,处理这个消息的最快和最可靠的方法是什么?

此外,由于我们正在发送响应,因此我可能还需要设置和出站消息队列。对两者使用相同的概念是否有意义?

1 个答案:

答案 0 :(得分:1)

“最快”和“最可靠”并不一定能很好地融合在一起:它通常是一种或另一种。

关于memcached和数据库,您必须知道memcached是缓存机制,而不是数据存储机制。


这意味着它不应该用于存储您无法重新生成的数据:

  • 如果系统出现故障(如崩溃/重启),您将失去memcached中的内容 - 而数据库更能恢复
  • 如果没有足够的RAM来存储数据,memcached将从缓存中删除一些旧项目,即使你没有要求它
在创建分布式缓存集群时,memcached很棒;但不应该用来存储重要且无法承受损失的数据。