Лучший подход для масштабируемой системы чата на PHP (AJAX) - PullRequest
3 голосов
/ 19 марта 2010

Я строю систему чата для компании, и мне интересно, как лучше всего построить систему?

Текущая настройка, которую мы имеем, это HTTP-сервер Nginx с PHP и Memcacheq (как очередь сообщений, которая добавляет сообщения чата в собственную очередь пользователя). Затем мы опрашиваем сервер Nginx (через запрос в стиле Comet) и запрашиваем обновления в очереди сообщений.

Является ли хорошей идеей использовать очередь сообщений, такую ​​как Memcacheq, для работы с системой чата, в которой есть чат как для пользователей, так и для всего сайта, или лучше просто придерживаться MySQL?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 19 марта 2010

Memcache полезен, только если у вас есть несколько устаревших данных (или плохой дизайн базы данных для увеличения времени выполнения запроса). В вашем случае (система чата) данные были бы свежими, и добавление Memcache может только усложнить (читай снижение производительности) вещи, насколько я могу видеть. Думайте о memcache как о промежуточном программном обеспечении (в оперативной памяти) между mysql и php. Если данные устарели, время отключения сокращается, так как PHP не должен переходить на mysql, но в случае свежих данных нагрузка будет фактически увеличиваться (поскольку memcache также должен будет извлечь изменения из PHP).

Таким образом, я бы не рекомендовал использовать memcache для системы чата. Рекомендую поискать в Интернете больше. Хороший пост на http://blog.tech.stylefeeder.com/2008/08/22/memcached-vs-mysql/

1 голос
/ 20 марта 2010

Memcacheq - отличный инструмент, который может помочь избежать задержки веб-запросов. Он может действовать как буфер между php и mysql, но это не замена mysql. Memcacheq также может облегчить масштабирование, поскольку может быть несколько потребителей распределенных сообщений.

Я бы порекомендовал поместить его между высоконагруженными php-запросами, сохраняя данные в mysql и выполняя трудоемкие операции. Это ускорит загрузку страниц для пользователей и освободит ваши веб-серверы от долгих запросов.

Memcacheq довольно быстрый. Это не займет много ресурсов

1 голос
/ 19 марта 2010

Я ожидаю, что Memcacheq будет работать намного лучше, чем MySQL.

0 голосов
/ 03 апреля 2010

Попробуйте это: http://pushmodule.slact.net/.Nginx позаботится о кометах, и все, что нужно вашему php-приложению, - это отправлять HTTP-запросы модулю.

...