АЛЕКСАНДР КАЛЕНДАРЕВ, РБК Медиа, программист, akalend@mail.ru
RabbitMQ. Вырастаем из штанишек
В статье рассмотрим основные паттерны использования сервера очередей RabbitMQ применительно к веб-проектам
В предыдущей статье [1] «Кролик в песочнице» мы знакомились с основами протокола AMQP и принципами работы с очередями.
Введение в паттерны
О паттернах написано много книг, и повторяться – это тратить свое и ваше время. Если кто не в теме, то паттерны – это такие обобщенные части, которые, как строительные кубики, используются для построения архитектуры проекта. Есть паттерны проектирования приложения, скорее всего вы уже читали бестселлер «банды четырех» [2]. Далее, развивая эту тему, появились паттерны проектирования баз данных. Есть специальный портал, посвященный разным паттернам проектирования [3]. Ну и, конечно, там не обделены вниманием и паттерны использования обмена сообщений [4].
Отложенные действия
Паттерн «Отложенные действия» является основным в архитектуре нагруженных проектов. Его суть в том, что нет необходимости выполнять все действия сразу, особенно те, которые требуют большого расхода ресурсов: памяти, процессорного времени. Некоторые действия можно выполнить чуть позже, но уже другим процессом или даже на другом сервере. Для координации действий используется очередь сообщений, по которой передаются действия (что нужно сделать) и параметры действий.
На рис. 1 изображена схема взаимодействия фронт-процесса (веб-скрипта) и фоновых процессов (background task), которые принято называть worker (рабочий процесс).
Рисунок 1. Схема взаимодействия фронт-процесса и фоновых процессов
Веб-скрипт принял запрос от клиента (браузера или мобильного приложения), сделал самые необходимые операции, не требующие ресурсов, подготовил данные для worker-процесса, передал их в очередь, а далее вернул на клиент ответ, что, мол, задача выполнена. А сама задача должна гарантированно выполниться спустя какое-то время. Тем самым мы снимаем часть нагрузки с веб-сервера, перенеся ее на другие серверы.
Приступим к реализации.
Статью целиком читайте в журнале «Системный администратор», №12 за 2015 г. на страницах 48-53.
PDF-версию данного номера можно приобрести в нашем магазине.
- Календарев А. Кролик в песочнице. // «Системный администратор», №10, 2015г. – С. 60-65 (http://samag.ru/archive/article/3074).
- Банда четырех – https://ru.wikipedia.org/wiki/Design_Patterns.
- Schmidt, Pattern-Oriented Software Architecture Vol.1-4, Wiley, 2000 – http://www.cs.wustl.edu/~schmidt/POSA.
- Honre, Woolf. Enterprise Integration Pattrerns. A Wesley, 2010.
- Пакет rabbitmq-java-client – https://www.rabbitmq.com/java-client.html.
- Официальный сайт RabbitMQ – https://www.rabbitmq.com.
- Серия статей, перевод с официального сайта – http://habrahabr.ru/post/149694.
- Zabbix мониторинг плагин – https://github.com/jasonmcintosh/rabbitmq-zabbix.