Архитектура
Настоящий Документ содержит описание архитектуры Tarantool Change Data Capture (TCDC).
Tarantool Change Data Capture (CDC) - это механизм захвата и переноса записей в реальном времени, построенный на микросервисной архитектуре. Он действует как промежуточный слой между Источниками (source) и Приемниками (sink) данных.

Передача данных в Tarantool CDC производится через Универсальный Обработчик. Это микросервис, который включает в себя:
- Коннектор к Источнику данных (source connector) - точка интеграции, при помощи которой происходит взаимодействие с Источником данных.
- Коннектор к Приемнику данных (sink connector) - точка интеграции, помощи которой происходит взаимодействие с Приемником данных.
- Single Message Transformations (SMT) - набор модулей, выполняющих различные преобразования событий (изменение структуры, добавление, удаление, переименование полей, смена их типов данных).
- Ограничитель потока данных (rate limiter) - модуль управления скоростью чтения данных из Источника.
- Обработчик контрольных точек (offsets) - классы для хранения контрольных точек (File system, TQE, Kafka).

В качестве Источника и Приемника данных могут использоваться как базы данных, так и очереди. Для взаимодействий с внешними системами в Tarantool CDC используются коннекторы как собственной разработки, так и сторонние коннекторы:
При помощи коннекторов собственной разработки Tarantool CDC может забирать данные из следующих Источников:
- Tarantool DataBase 1.x (TDB1) - при помощи Tarantool Source Connector;
- Tarantool DataBase 2.x (TDB2) - при помощи Tarantool Source Connector;
- Tarantool Data Grid 2.x (TDG2) - при помощи Tarantool Source Connector;
- Tarantool Queue Enterprise (TQE) - при помощи TQE Source Connector;
- Kafka - при помощи коннектора к Источнику данных Kafka.
При помощи сторонних коннекторов Tarantool CDC может забирать данные из следующих Источников:
- PostgreSQL - при помощи PostgreSQL Debezium Source Connector;
- Oracle - при помощи Oracle Debezium Source Connector.
Передача данных в следующие Приемники осуществляется при помощи коннекторов собственной разработки:
- Tarantool DataBase 1.x/ 2.x (TDB1/ TDB2) - при помощи коннектора к Приемнику данных Tarantool;
- Tarantool Queue Enterprise (TQE) - при помощи TQE Sink Connector;
- Tarantool Column Storage 1.x - при помощи коннектора к Приемнику данных TCS.
- Elasticsearch - при помощи ссылка;
- Kafka - при помощи коннектора к Приемнику данных Kafka.
Передача данных в следующие Приемники осуществляется при помощи сторонних коннекторов:
- Clickhouse - при помощи Clickhouse KafkaConnect;
- Oracle - при помощи JDBC Debezium Sink Connector;
- PostgreSQL - при помощи JDBC Debezium Sink Connector.
Одна установка Tarantool CDC может включать в себя несколько Универсальных Обработчиков и передавать данные между несколькими одинаковыми или разнородными системами, например: из Oracle в Kafka, из TQE в Elasticsearch или из Kafka в Tarantool DB. При этом одна и та же очередь или база данных может выступать одновременно как Источником, так и Приемником данных.

По мере необходимости в рабочую установку Tarantool CDC можно включать дополнительные Универсальные Обработчики.
Перенос данных через Tarantool CDC организован следующим образом:
- Данные из Источника получаются соответствующим коннектором. Механизм получения и формат данных зависит от настроек этого коннектора (а также от настроек самого Источника данных).
- Для каждого события применяется цепочка преобразований (SMT). В процессе некоторые события могут быть отброшены.
- Ограничитель потока данных управляет скоростью чтения данных.
- Преобразованные события записываются в Приемник через соответствующий коннектор. Механизм записи и формат данных зависит от настроек коннектора Приемника и настроек целевой системы.

Установка Tarantool CDC может быть развернута в среде Kubernetes или при помощи инструментов ATE.
В среде Kubernetes развертывание происходит при помощи Helm-чарта. Кроме параметров пода, Helm-чарт содержит конфигурационные
параметры Универсального Обработчика, позволяющие его создать, изменить или удалить. Эти параметры определяются в файле values.yaml:
Объединенная архитектурная схема установки Tarantool CDC, развернутого в поде кластера Kubernetes (приведенная ниже), включает в себя:
- Helm-чарт - в качестве точки управления.
- СonfigMap - для хранения конфигурационных файлов.
- Файл
values.yaml- основной конфигурационный файл. - Основной поток переноса данных (жирные линии).
- Управляющие взаимодействия (пунктирные линии).
- Универсальный Обработчик - микросервис, включающий в себя коннекторы, преобразователь и ограничитель данных.
- PostgreSQL Debezium Source Connector - в качестве примера коннектора к Источнику данных.
- TQE Sink Connector - в качестве примера коннектора к Приемнику данных.
Также на диаграмме представлены:
- PostgreSQL - в качестве примера Источника данных.
- TQE - в качестве примера Приемника данных

В случае развертывания установки Tarantool CDC при помощи
инструментов Tarantool ATE,
Helm-чарт не используется, а конфигурационные параметры задаются в файле application.yaml.
Тогда объединенная архитектурная схема установки CDC будет выглядеть так, как показано на диаграмме:
