АЛЕКСАНДР КАЛЕНДАРЕВ, РБК Медиа, программист, akalend@mail.ru
Кролик в песочнице
В современных разработках проектов с высокой доступностью серверы очередей заняли свою нишу. В статье рассматриваются основные принципы работы с очередями и паттерны использования сервера очередей RabbitMQ
Попытаемся понять, в чем сама суть очередей, что это
за зверь и с чем его едят. Понятие «очередь» появилось в теории систем массового обслуживания (СМО); когда запросов на обслуживание больше, чем может обработать СМО, тогда необработанные заявки становятся в ожидание. Существуют разные дисциплины обслуживания, но самая распространенная – это FIFO (First In – First Out): пришел первый – первый ушел. Такая дисциплина обслуживания в СМО и называется очередью.
Теме очередей посвящен целый раздел в учебном курсе «Алгоритмы и структуры данных». Существует несколько видов реализации очередей. В частности, реализацию простой очереди FIFO можно организовать с помощью связанного списка.
Программные продукты, поддерживающие управление и реализацию очередей, называют серверами очередей, или часто в зарубежной прессе можно встретить название «брокер очередей», или просто часто сокращают до «брокера».
Серверы очередей относятся к классу middleware, связывающему программное обеспечение (ПО), которое является составной частью инфраструктуры проекта, и представляют собой промежуточное звено между серверами приложений и системным программным обеспечением, таким как веб-сервер, серверы базы данных или иные хранилища данных, кэширующий сервер или еще какой-нибудь скрипт-демон.
В настоящее время одними из самых распространенных программных продуктов со свободным исходным кодом являются JBoss Messaging, ZMQ, ActiveMQ, Apache Kafka и RabbitMQ.
Будем рассматривать последний. Как вы уже догадались из названия: Rabbit – кролик, MQ (message queue) – очередь сообщений.
Статью целиком читайте в журнале «Системный администратор», №11 за 2015 г. на страницах 60-65.
PDF-версию данного номера можно приобрести в нашем магазине.
- Официальный сайт RabbitMQ – https://www.rabbitmq.com.
- Официальный сайт поддержки протокола AMPQ – http://amqp.org.
- Официальный docker-образ RabbitMQ – https://hub.docker.com/_/rabbitmq.
- Описание работы с РНР – https://www.rabbitmq.com/tutorials/tutorial-one-php.html.
- Описание работы с Рython – https://www.rabbitmq.com/tutorials/tutorial-one-python.html.
- Документация API PHP – http://php.net/manual/pl/book.amqp.php.
- Документация API Python pika – https://pika.readthedocs.org/en/0.10.0.
- Силаков Д. Проект Docker. Управляем виртуальными окружениями. // «Системный администратор», №3, 2015 г. – С. 4-7 (http://samag.ru/archive/article/2887).
- Силаков Д. Инструменты управления множеством контейнеров docker. // «Системный администратор», №5, 2015 г. – С. 11-15 (http://samag.ru/archive/article/2942).