Поддержка очередей сообщений
Описание
Под очередью сообщений далее понимается план их получения потребителями (consumer) от генерирующих сообщения и помещающих их в очередь отправителей (provider). Передаваемые сообщения (event) будут получены в рамках сеансов (batch).
Функция внешнего по отношению к СУБД менеджера очереди (manager), запускаемая с заданной периодичностью, генерирует элемент синхронизации очереди (tick). Наличие единого внешнего управляющего элемента позволяет избежать ситуаций гонки, достичь прогнозируемых количества сообщений и периодичности их получения.
Функциональность очередей сообщений позволяет:
- определять очереди для передачи списка текстовых сообщений от «потребителя» в сторону одного или нескольких отправителей с использованием механизма монопольных или кооперативных очередей;
- организовывать очереди сообщений между разными сущностями СУБД вне зависимости от версии СУБД и разрядности операционной системы;
- накапливать сообщения от генератора и организовывать сеансы получения сообщений очереди;
- получить сообщение повторно через определенное время без возможности приоритизации;
- использовать менеджер сообщений средствами приложения, либо с использованием штатного менеджера сообщений;
- управлять получением сообщений в одном сеансе, в том числе с фильтрацией по содержимому сообщений;
- автоматически добавлять сообщения в определенную очередь посредством триггеров.
Расширение дополняет ролевую модель СУБД ролями, подробнее об этом в подразделе «Роли» расширения pgq.
Настройка
Перед началом работы необходимо последовательно настроить следующие компоненты:
- Обязательные компоненты: расширение
pgq, реализующее монопольную очередь сообщений, а также менеджер очередейpangolin-pgqd, который является системным сервисом, предоставляющий элементы синхронизации (tick). Для этого сначала выполните установку pgq и pangolin-pgqd, затем выполните настройку расширения и менеджера очередей pangolin-pgqd. - Необязательный компонент: расширение
pgq_coop, предоставляющее реализацию кооперативной очереди на основеpgq. Выполните установку pgq_coop.
Управление
Расширение pgq_coop предназначено для организации кооперативных очередей. В данной реализации один источник может быть связан с несколькими потребителями. Расширение является опциональным, требует установки расширения pgq.
Расширение pgq является обязательным элементом для организации очередей сообщений и предоставляет интерфейсы для создания и управления очередями, организации работы отправителя и получателя. Расширение создает служебную схему pgq, содержащую служебные таблицы и функциональные интерфейсы работы. Дополнительная информация о расширении приведена в разделе «pgq. Организация монопольных очередей сообщений» документа «Описание расширений продукта СУБД Pangolin».
Ротация очереди, размещение и предоставление новых сообщений очереди основано на комбинации временных отметок и манипулировании правилами видимости строк на основании расчетов XID операций отправителя и получателя.
Использование модуля
С модулем можно работать в двух режимах:
- с использованием монопольной очереди (расширение
pgq); - с использованием кооперативной очереди (расширение
pgq_coop).
Использование механизма очередей сообщений с помощью расширений pgq и pgq_coop, а также системного сервиса pgqd, связано с рядом архитектурных и операционных ограничений, которые необходимо учитывать при внедрении и сопровождении решения.
Управление очередями сообщений на ведомом сервере невозможно. Все операции с очередями должны выполняться только на ведущем сервере. В процессе развертывания необходимо предусмотреть установку и настройку сервиса pgqd, если предполагается использование функциональности очередей.
Решение совместимо с потоковой и логической репликацией.
Решение совместимо с системами резервного копирования, работающими на файловом уровне. При выполнении логического дампа базы данных или ее восстановлении необходимо отключить менеджер очередей pgqd на время операции.
Для организации передачи сообщений используются типы данных xid и производные от них. После восстановления данных возможны:
- значительные задержки при получении сообщений;
- изменение порядка обработки новых сообщений.
Перед созданием резервной копии рекомендуется полностью очистить все очереди сообщений.
Кроме того, использование xid-зависимой логики может повлиять на перенос существующего кластера базы данных с 32-битной системой идентификаторов транзакций (XID) на 64-битную.
Отключение функциональности
Для отключения механизма очередей:
- Остановите и отмените регистрацию сервиса
pangolin-pgqd. - Удалите соответствующие строки из
pg_hba.conf, относящиеся кpangolin-pgqd. - Удалите расширения
pgqиpgq_coopиз базы данных (опционально).