Очереди, потоки, события
Change data capture: тест с выбором ответа
Шесть вопросов поперёк всего юнита. Каждый отражает решение, которое ты принимаешь, эксплуатируя CDC в production — не определение для заучивания, а сбой, который надо разобрать прежде, чем он тебя разбудит.
Убедись, что связываешь механизм slot, удержание WAL, стратегию snapshot, захват delete и семантику доставки — тот синтез, к которому вёл урок.
Воркер Kafka Connect коннектора Debezium ловит OOM и лежит шесть часов на нагруженной OLTP-машине. Какой главный риск для исходного Postgres и почему?
Твой CDC-коннектор выглядит полностью здоровым — потребляет, lag около нуля — но WAL на primary продолжает расти и диск заполняется. Самая вероятная причина?
Нужно забутстрапить CDC на многотерабайтной таблице MySQL под постоянными записями, и нельзя замораживать записи на часы. Какая стратегия snapshot подходит и в чём компромисс?
Событие DELETE из Postgres приходит с before-образом, содержащим только primary key, а downstream нужна полная строка до удаления. Что происходит и какова цена фикса?
Команда говорит: «Debezium 2.x даёт exactly-once, так что consumer может пропустить дедуп». Где ломается это рассуждение?
Consumer джойнит изменения из таблицы orders и таблицы payments и предполагает, что видит их в порядке коммитов. Почему при Debezium-to-Kafka это предположение небезопасно?
Сквозная линия юнита — одна цепочка следствий: безусловное обещание slot по WAL делает CDC возобновляемым и оно же переполняет диск, когда consumer застрял или долгая транзакция заморозила restart_lsn; бутстрап — это snapshot-then-stream, где incremental snapshot меняет простоту на старт без lock; захват полных delete стоит объёма WAL через REPLICA IDENTITY FULL; а поскольку resume — at-least-once с порядком только по ключу, consumers должны быть идемпотентными и не предполагать глобальный порядок коммитов.