Перейти к содержанию

Banking CDC и миграция core banking

Раздел 05 · Редакционный стандарт

Тип материала — референсная архитектура. HYPOTHETICAL — схемы и операции. INFERENCE — инженерные рекомендации и критерии выбора. Внешние контракты ограничены источниками ниже.

Бизнес-задача

Перенести систему учёта с проверяемой полнотой и контролируемой сменой writer.

Требования

Сохранить snapshot boundary и доступность WAL/redo. Проверить source-specific контракт, ограничения DDL и rollback window.

Поток данных и владение состоянием

flowchart LR
 A["Core database"] --> B["Snapshot and log reader"]
 B --> C["Kafka"]
 C --> D["Target apply"]
 D --> E["Cutover controller"]

До переключения source остаётся writer. После fencing target владеет новыми изменениями.

Транзакционные границы

Apply state и progress фиксируются вместе в target либо выполняются идемпотентно. Fencing и открытие writer требуют отдельного протокола.

Порядок и идемпотентность

Row key, source revision и tx metadata. Snapshot read не является новой бизнес-операцией. Kafka offsets локальны partition.

Нормальная последовательность

sequenceDiagram
 participant A as Core database
 participant B as Snapshot and log reader
 participant C as Kafka
 participant D as Target apply
 A->>B: Read source-native snapshot cut
 B->>C: Start retained change stream
 C-->>B: Return snapshot and log frontier
 B->>D: Apply rows with source revisions

Отказ и восстановление

sequenceDiagram
 participant B as Snapshot and log reader
 participant C as Kafka
 participant E as Recovery operator
 B->>C: Source log retention gap prevents resume
 Note over B,C: Outcome becomes uncertain
 E->>C: Build a new snapshot and validate before promotion
 E->>B: Resume from verified boundary

При log gap — новый snapshot и generation. Для cutover остановить старые writes, drain до измеренного frontier, сверить и открыть target. После target writes rollback требует reverse replication либо переноса подтверждённых изменений.

Сверка

Сравнить ключи, валюты, суммы и journal invariants на fenced cut.

Cutover gate. Запишите source snapshot ID, начальную позицию, подтверждённый конечный frontier и версии схем. Для multi-row transactions выберите атомарный target apply или запретите чтение промежуточной реплики до публикации cut. Сверка проверяет отсутствие orphan legs, одинаковые IDs и signed totals. После promotion служба маршрутизации допускает только новый writer epoch. Сетевое переключение без fencing оставляет риск split brain.

Наблюдаемость

Lag, oldest retained log, schema failures и rejected stale writer.

Безопасность и применимость требований

Защитить копии PII и привилегии connector. Oracle и PostgreSQL требуют разных source adapters.

Альтернативы и trade-offs

CDC снижает паузу, offline copy упрощает доказательство cut.

Вопросы на собеседовании

Почему lag=0 недостаточно? Нужны source frontier, покрытие ключей и запрет старого writer.

Первичные источники