Описание архитектуры
Настоящий документ содержит описание архитектуры Tarantool Change Data Capture.
Tarantool Change Data Capture (далее Tarantool 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 DB 1.x-2.x; Tarantool Data Grid 1.x-2.x; Tarantool Queue Enterprise 2.x и 3.x; Tarantool Enterprise Edition 2.11-3.x - через коннектор к Источнику данных Tarantool.
- Kafka - через коннектор к Источнику данных Kafka.
С помощью сторонних коннекторов Tarantool CDC может забирать данные из:
- PostgreSQL - через PostgreSQL Debezium Source Connector.
- Oracle - через Oracle Debezium Source Connector.
С помощью коннекторов собственной разработки Tarantool CDC может передавать данные в:
- Tarantool DB 1.x-2.x; Tarantool Data Grid 1.x-2.x; Tarantool Queue Enterprise 2.x и 3.x; Tarantool Enterprise Edition 2.11-3.x - через коннектор к Приемнику данных Tarantool.
- Elasticsearch - через коннектор к Приемнику данных Elasticsearch.
- Kafka - через коннектор к Приемнику данных Kafka.
С помощью сторонних коннекторов Tarantool CDC может передавать данные в:
- Tarantool Column Storage 1.x - через коннектор к Приемнику данных TCS.
- 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-чарт - точка управления.
- ConfigMap - для хранения конфигурационных файлов.
- Файл
values.yaml- основной конфигурационный файл. - Основной поток переноса данных (жирные линии).
- Управляющие взаимодействия (пунктирные линии).
- Универсальный Обработчик - микросервис, включающий коннекторы, преобразователь и ограничитель данных.
- PostgreSQL Debezium Source Connector - как пример коннектора к Источнику данных.
- TQE Sink Connector - как пример коннектора к Приемнику данных.
Также на диаграмме представлены:
- PostgreSQL - как пример Источника данных.
- TQE - как пример Приемника данных.

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