Рубрика «gearman»

Сервер очередей Gearman — прекрасный инструмент. Но в работе сервер очередей в чем-то напоминает системный блок: что-то делает, но для того чтобы знать, что именно, и управлять процессом, нужен монитор с клавиатурой, и представление о том, что вообще происходит в системном блоке.
Зачастую кажется, что Gearman — как диковинный инструмент без рукоятки: интересен и красив, но неясно, зачем нужен, а пользоваться болезненно.
Нужно выбраться из этой ситуации, Gearman действительно хорош.
Давайте рассмотрим:

  • Gearman «на пальцах»
  • примеры реальных задач с использованием Gearman
  • веб-приложение и класс для мониторинга в реальном времени и управления процессами на сервере очередей Gearman

Интересно? Прошу под кат.
Читать полностью »

Изучим все детали основных сервисов передачи сообщений доступных в PHP.

  1. Семафоры
  2. Gearman
  3. JMS с PHP:
    1. QUERCUS
    2. PHPMQ->MANTARAY

1. Семафоры

Semaphore — это PHP модуль, который на самом делал состоит из трех расширений, и включает в себя семафоры, разделяемую память и межпроцессное взаимодействие (IPC). Этот модуль предоставляет обертки к семейству функций System V IPC; чтобы использовать его в PHP, вам нужно включить этот модуль вручную, так как по умолчанию он отключен; чтобы включить поддержку System V семафоров используйте флаг --enable-sysvsem при компиляции, для включения разделяемой памяти скомпилируйте PHP с --enable-sysvshm, и для включения System V сообщений скомпилируйте PHP с опцией --enable-sysvmsg.
Читать полностью »

Некоторое время назад мы вместе с небольшой командой программистов начали разработку достаточно интересного с технической точки зрения аналитического проекта. Основной его целью была обработка данных, получаемых с различных веб-страниц. Нужно было обрабатывать эти данные, приводя в удобный вид и после этого анализировать собранную статистику.

До тех пор, пока у нас не было большого количества всевозможных данных, мы не имели каких-то нестандартных проблем и все решения были достаточно прямолинейными. Но проект разрастался, и размер собираемой информации, хотя сначала и не очень быстро, но все же увеличивался. Росла и кодовая база. И через некоторое время мы осознали весьма печальный факт — из-за всяких костылей и быстро-фиксов мы нарушили почти все возможные принципы проектирования. И если сначала организация кода была не столь важна, то со временем стало понятно, что без хорошего рефакторинга далеко мы не уедем.
Читать полностью »

Всем привет!

Сегодня я хочу поделиться с вами решением задачи, с которой мы столкнулись при разработке социальной игры. Игровой клиент был написан на flash, а для back-end был выбран php. Игра относится к тайм-менеджмент играм.
Схема работы была выбрана следующая:

  1. игрок совершает действие на клиенте
  2. клиент проверяет возможность совершения действия
  3. отсылает команду на сервер
  4. сервер проверяет возможность совершения действия, выполняет команду, производя изменения в базе
  5. клиент уведомляется о том, что все ок или информируется об ошибке

Все работало отлично, пока не происходило резкое возрастание количества игроков.
Сначала начались тормоза со стороны php. Основная проблема данной реализации заключалась в том, что на каждое действие игрока дергается сервер, который производит довольно много вычислений по обсчету объектов на карте перед выполнением команды. Эта проблема была решена путем добавления дополнительных серверов с обработчиками php.
Потом мы уперлись в производительность mysql. Было слишком много запросов. Так как шардинг не был заложен в систему, то выкручивались как могли. Что-то перенесли в mongodb, где-то улучшили работу с кэшем.

Кстати, mongodb оказался не таким простым хранилищем, как может показаться на первый взгляд. Учитывая то, что у нас было включено шардирование и стояли правильные индексы, мы все равно словили там тормоза, с которыми не смогли разобраться на тот момент. Периодически просто высыпалась пачка запросов в log, которые вдруг затупили. Хотя через секунду те же запросы работали нормально при том же количестве запросов. Но это тема отдельного поста.

Собственно для нового аналогичного проекта было принято решение использовать другую схему взаимодействия клиента и сервера.
Именно об это я и хочу рассказать.

Читать полностью »

Долгое время не решался писать на Хабр. Как минимум, из-за технической неустойчивости проекта. Теперь, когда работа налажена (искренне надеюсь на это), мы получили небольшое признание в виде гранта от Юрия Мильнера и Павла Дурова, я готов отправить проект в хабромясорубку.

image

Меня зовут Никита Лихачев, я хочу рассказать вам о сайте The Twi Journal. Это газета, которая строится на основе автоматического анализа русскоязычного Твиттера.

Аккуратно: большие картинки | На «Я пиарюсь» кармы не хватило

Читать полностью »

Не так давно была замечательная статья, описывающая общие принципы работы с сервером очередей Gearman. Мне бы хотелось продолжить материал, дополнив его некоторыми деталями практического применения, а именно:
— установка и управление сервером
— управление очередью — что возможно и как
— PECL и PEAR php-расширения для работы с Gearman
— мониторинг сервера
— примеры кода
— передача данных порциями
— организация параллельных вычислений в PHP

Интересно? Прошу под кат
Читать полностью »