Базовая репликация#
Сценарий описывает внутренний механизм работы компонентов GraDeLy без участия пользователя. Сценарий осуществляется после, того как пользователь запускает граф репликации.
Пререквизиты#
созданы технические пользователи и прописаны в конфигурацию (данные для подключения к БД);
сетевые доступы консоль-воркер, воркер-БД, воркер-Kafka открыты.
Процесс#
консоль управления отправляет
POST /processко всем модулям.консоль управления отправляет
POST /startна воркер (содержит рабочую конфигурацию).
Модуль захвата:
В зависимости от конфигурации подключается к топику Kafka или БД.
Через соответствующий коннектор подключается к установленной базе данных и устанавливает JDBC соединение.
Подписывается на поток изменений WAL (позицию хранит сервер БД и Kafka).
Сообщает модулю управления о готовности и начинает в цикле опрашивать поток репликации.
Получает сообщения от потока репликации в формате pgoutput.
При получении данных выполняется разбор бинарных данных, полученных из потока репликации, далее они сериализуется в MsgPack при отправке в Kafka.
Прочитав данные, выполняет функцию предварительной фильтрации и преобразований (если настроена).
Присваивает транзакции идентификатор GradelyID в момент отправки в Kafka (при выполнении команды COMMIT, если маппинг не отфильтровал векторы изменений из этого коммита).
В зависимости от конфигурации записывает данные в топик Kafka (GradelyID записывает в keys) или в БД.
При установленном режиме полусинхронной репликации после успешной записи отправляет ответ в слот репликации об обработанном номере записи (lsn).
Цикл чтения повторяется до получения запроса на остановку модуля. Вызов
POST /stopворкера от консоли управления.
Модуль применения:
Через соответствующий коннектор подключается к установленной базе данных и устанавливает JDBC соединение.
На основании метаданных (предварительный запрос к БД приемника при старте модуля применения) формируются шаблоны SQL-запросов.
Созданные шаблоны используются для генерации необходимых DML операций.
Подключается к топику Kafka.
Сообщает модулю управления о готовности и начинает в цикле опрос топика.
В цикле читает данные и происходит формирование SQL (с учетом маппинга, фильтрации и преобразований).
Для каждого прочитанного набора транзакций вызывается скрипт его записи в базу данных назначения.
После успешного выполнения обработки набора транзакций записывает в топик обработки Kafka сообщение об успешной обработке.
Есть возможность старта с произвольной точки (GraDeLyID).