Базовая репликация#

Сценарий описывает внутренний механизм работы компонентов GraDeLy без участия пользователя. Сценарий осуществляется после, того как пользователь запускает граф репликации.

Пререквизиты#

  • созданы технические пользователи и прописаны в конфигурацию (данные для подключения к БД);

  • сетевые доступы консоль-воркер, воркер-БД, воркер-Kafka открыты.

Процесс#

  • консоль управления отправляет POST /process ко всем модулям.

  • консоль управления отправляет POST /start на воркер (содержит рабочую конфигурацию).

Модуль захвата:

  1. В зависимости от конфигурации подключается к топику Kafka или БД.

  2. Через соответствующий коннектор подключается к установленной базе данных и устанавливает JDBC соединение.

  3. Подписывается на поток изменений WAL (позицию хранит сервер БД и Kafka).

  4. Сообщает модулю управления о готовности и начинает в цикле опрашивать поток репликации.

  5. Получает сообщения от потока репликации в формате pgoutput.

  6. При получении данных выполняется разбор бинарных данных, полученных из потока репликации, далее они сериализуется в MsgPack при отправке в Kafka.

  7. Прочитав данные, выполняет функцию предварительной фильтрации и преобразований (если настроена).

  8. Присваивает транзакции идентификатор GradelyID в момент отправки в Kafka (при выполнении команды COMMIT, если маппинг не отфильтровал векторы изменений из этого коммита).

  9. В зависимости от конфигурации записывает данные в топик Kafka (GradelyID записывает в keys) или в БД.

  10. При установленном режиме полусинхронной репликации после успешной записи отправляет ответ в слот репликации об обработанном номере записи (lsn).

  11. Цикл чтения повторяется до получения запроса на остановку модуля. Вызов POST /stop воркера от консоли управления.

Модуль применения:

  1. Через соответствующий коннектор подключается к установленной базе данных и устанавливает JDBC соединение.

  2. На основании метаданных (предварительный запрос к БД приемника при старте модуля применения) формируются шаблоны SQL-запросов.

  3. Созданные шаблоны используются для генерации необходимых DML операций.

  4. Подключается к топику Kafka.

  5. Сообщает модулю управления о готовности и начинает в цикле опрос топика.

  6. В цикле читает данные и происходит формирование SQL (с учетом маппинга, фильтрации и преобразований).

  7. Для каждого прочитанного набора транзакций вызывается скрипт его записи в базу данных назначения.

  8. После успешного выполнения обработки набора транзакций записывает в топик обработки Kafka сообщение об успешной обработке.

  9. Есть возможность старта с произвольной точки (GraDeLyID).