Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Выбор системы организации очередей для PHP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Shader



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
 
Не могу определиться с выбором системы организации очередей в текущем ITSM интранет-проекте. Проект пишется на Yii, но это побочная информация. Прикрутить к нему внешний компонент несложно. В процессе работы будут возникать периодические ресурсоёмкие задачи с долгим временем выполнения: сохранение конфигураций, работа с оборудованием, долгие SOAP-запросы на другие сервисы и т.п. Задачи односторонние, т.е. взаимодействия с пользователем не будет - только отчёт о выполнении где-нибудь в отдельном схлопывающемся виджете. Показалось разумным реализовать это в виде фоновых задач. Однако, в процессе выбора решения почувствовал себя буридановым ослом:

  1. PHP Resque <link>
    Требует установленного Redis и php-resque. Имеет шикарный веб-интерфейс ResqueBoard, но он еще хочет MongoDB, NodeJS и npm. Такой тщательный менеджмент, это, безусловно, хорошо, но острой необходимости в нём нет. Плюс смущает обилие большого количества сопутствующих сервисов - замучаюсь обновлять и поддерживать.  
  2. Gearman <link>
    Может держать очереди в памяти, чего для моих задач вполне хватит, а значит не нужны дополнительные установки хранилища. Но мониторинг Gearman-Monitor жёстко привязывает к Net_Gearman и использовать pecl расширение не получится. Но минус это несущественный.
  3. AMQP <link>
    Может подключаться к разным серверам очередей и, например, у RabbitMQ есть порт для RHEL (который и будет стоять на сервере), довольно гибкая конфигурация и, что для меня немаловажно, простота реализации. Скелет проекта приходится собирать в одиночку и не очень хочется взрывать себе мозг еще пятью технологиями.

Виджет с количеством текущих задач пользователя и статусом их выполнения в любом случае будет и работать он будет используя вебсокеты. Подробной статистики, как в ResqueBoard не требуется - пользователю достаточно будет видеть статус выполнения задачи, а администраторы могут контролировать логи. Хотя ResqueBoard, конечно, красив, зараза. Очень сильно наворачивать по горизонтали не хочется, чтобы не вышло, как например, в клавогонках: node.js, redis, pubsub, Socket.IO и грядёт добавление mongodb и angular.js.
 
Пока я выбираю между PHP Resque и AMQP. Возможно, я упускаю что-то важное или не заметил явной альтернативы? Буду благодарен за любые наводки, рекомендации и личное мнение тех, кто использовал очереди и фоновые задачи в рамках PHP-проектов.

Всего записей: 54 | Зарегистр. 14-09-2003 | Отправлено: 11:38 03-05-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shader
а написать свой? цеплять на крон запуск и пусть перебирает очередь по возможности.
в принципе не должно быть ничего особенного.
 
либо, тогда использовать что то, что реализовано не на php, а является самостоятельным сервером, но будет запускать нужные скрипты с нужными параметрами.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 11:46 03-05-2013
Shader



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Текущая система примерно так и работает, что на практике вызывает довольно много проблем. Источник их не в архитектуре, конечно, а в реализации - написана система была еще в каменном веке. Но одна задача, например, несмотря на создание .lock и .pid файлов, изредка любит необъяснимо умирать где-то в фоне при конкурирующем вызове.
 
Наверное, из-за кажущейся логичности и подобия привычного стека, мне и хочется взять систему организации очередей, сгруппировав воркеры по какому-то общему признаку: воркер для работы с коммутаторами, воркер для работы с provisioning серверами, воркер для вебсервисов и взаимодействия со внешними ресурсами.  
 

Цитата:
либо, тогда использовать что то, что реализовано не на php, а является самостоятельным сервером, но будет запускать нужные скрипты с нужными параметрами.

Все перечисленные в начальном сообщении сервисы - это standalone сервера не на PHP. RabbitMQ, например, написан на Erlang'e. Наличие стороннего решения не смущает, вопрос только в его выборе. Незнакомое поле, не очень хочется наступить на детские грабли, допустив ошибку в планировании и потом вешаться с поддержкой и обновлением десятка зависимостей. Я стараюсь сохранить относительную простоту реализаций. Например, "живой" виджет был сделан с использованием Server-Side Events, чтобы не цепляться к какому-либо EventMachine-серверу типа phpDaemon.

Всего записей: 54 | Зарегистр. 14-09-2003 | Отправлено: 12:24 03-05-2013 | Исправлено: Shader, 12:26 03-05-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Выбор системы организации очередей для PHP

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru