我正在为一家公司构建聊天系统,我想知道构建系统的最佳方式是什么?
我们当前的设置是带有 PHP 和 Memcacheq 的 Nginx HTTP 服务器(作为将聊天消息附加到用户自己的队列的消息队列)。然后我们轮询 Nginx 服务器(通过 Comet 样式请求)并查询消息队列以获取更新。
使用 Memcacheq 之类的消息队列来处理同时具有用户对用户和站点范围的聊天的聊天系统是一个好主意,还是最好坚持使用 MySQL?
谢谢!
Memcache 仅在您有一些陈旧的数据(或糟糕的数据库设计以增加查询执行时间)时才有用。就您而言(聊天系统),数据将是新鲜的,据我所知,添加 Memcache 只会使事情复杂化(读取性能降低)。将 memcache 视为 mysql 和 php 之间的中间件(在 RAM 上)。如果数据过时,则行程时间会减少,因为 PHP 不必转到 mysql,但如果有新数据,负载实际上会增加(因为 memcache 还需要从 PHP 获取更改)。
总之,我不建议将 memcache 用于聊天系统。建议多上网搜索。http://blog.tech.stylefeeder.com/2008/08/22/memcached-vs-mysql/上的一篇好文章
Memcacheq 是一个很棒的工具,可以帮助避免 Web 请求的延迟。它可以充当 php 和 mysql 之间的缓冲区,但不能替代 mysql。Memcacheq 还可以使扩展更容易,因为可能有多个分布式消息消费者。
我建议把它放在高负载的 php 请求之间,将数据保存到 mysql 和执行耗时的操作。这将加快用户的页面加载速度,并将您的网络服务器从长请求中解放出来。
Memcacheq 非常快。不会占用太多资源
我希望 Memcacheq 的性能比 MySQL 好得多。
试试这个: http: //pushmodule.slact.net/。Nginx 会处理彗星的东西,而你的 php 应用程序需要做的就是向模块发送 HTTP 请求。