Przejdź do głównej zawartości
GIFRÖST / CDC delivery

Konfigurowalna częstotliwość dostarczania zmian.

GIFRÖST umożliwia konfigurację różnych częstotliwości dostarczania zmian: ciągłą replikację CDC, uruchomienia według harmonogramu oraz zasilenia na żądanie dla wybranych tabel. Dzięki temu jedno wdrożenie może obsługiwać zarówno tryb czasu rzeczywistego, jak i kontrolowane okna zasileń.

Czas rzeczywistyKonektor stale dostarcza zmiany ze źródła.
Na żądanieSygnały uruchamiają snapshot dla wskazanych tabel.
InterwałyMonitory powtarzają akcje w zdefiniowanym oknie.
Punkt w czasieStart, wznowienie lub restart konektora można zaplanować.

Pokrycie wymagania

Wymaganie „umożliwia konfigurację różnych częstotliwości dostarczania zmian” jest realizowane przez połączenie mechanizmów Debezium oraz warstwy operacyjnej GIFRÖST. Platforma obsługuje co najmniej trzy modele: dostarczanie w czasie rzeczywistym, zasilanie na żądanie oraz zasilanie planowane w czasie lub powtarzane w interwałach.

Tryb 01Replikacja w czasie rzeczywistym

Po fazie snapshotu początkowego konektor czyta zmiany z dziennika transakcyjnego i dostarcza je do tematów Kafka w sposób ciągły. Jest to podstawowy model pracy CDC dla bieżącej replikacji.

Tryb 02Zasilenie tabel na żądanie

Operator może uruchomić ad hoc snapshot dla wybranych tabel przez sygnał execute-snapshot. Debezium obsługuje w tym mechanizmie snapshoty incremental oraz blocking.

Tryb 03Zasilenie według harmonogramu

Monitory GIFRÖST mogą uruchamiać akcje na konektorze o konkretnej godzinie albo cyklicznie w zadanym interwale. Pozwala to dopasować zasilenie do okien serwisowych, cykli godzinowych lub innych zaplanowanych momentów przetwarzania.

Zasilenie na żądanie przez sygnały

GIFRÖST udostępnia sygnały Debezium bezpośrednio w widoku konektora. Użytkownik wybiera kanał sygnału, typ EXECUTE_SNAPSHOT, tryb snapshotu oraz tabele, które mają zostać zasilone. Dzięki temu można odświeżyć konkretne kolekcje danych bez przebudowywania całego potoku replikacyjnego.

Ekran GIFRÖST z konfiguracją sygnału execute snapshot

Zakładka Signals służy do wysłania żądania EXECUTE_SNAPSHOT dla wskazanych tabel. Snapshot inkrementalny sprawdza się przy porcjowanym i powtarzalnym odświeżaniu danych, natomiast snapshot blokujący może zostać użyty wtedy, gdy konektor ma chwilowo wstrzymać streaming i wykonać żądany snapshot.

Podstawa techniczna Debezium

Typ sygnału: execute-snapshot uruchamia snapshot ad hoc.

Zakres zasilenia: data-collections wskazuje tabele albo wzorce tabel, które mają zostać objęte snapshotem.

Tryb snapshotu: Debezium obsługuje snapshoty ad hoc typu incremental oraz blocking. Snapshot inkrementalny przetwarza tabele porcjami i może być uruchamiany ponownie zależnie od potrzeb operacyjnych.

Zasilenie według harmonogramu

Harmonogramowanie zasileń odbywa się w module monitorowania i alertowania. Monitor określa, kiedy ma zostać uruchomiona akcja, a akcja konektora określa, jaka operacja zostanie wykonana. Przykładowo platforma może wystartować, wznowić, zaktualizować albo zrestartować konektor o konkretnej godzinie lub powtarzać taką operację w ustalonym interwale.

Ekran GIFRÖST z wyborem monitora interwałowego i punktu w czasie

Scheduled Timepoint uruchamia akcję w wybranym dniu i o wybranej godzinie. Interval Action Runner powtarza przypisane akcje w określonym przedziale czasu. W połączeniu z akcjami konektora mechanizmy te kontrolują, kiedy konektor CDC zostanie uruchomiony, wznowiony albo zrestartowany.

Punkt w czasieStart lub restart o wskazanej godzinie

Monitor Scheduled Timepoint może wywołać akcję konektora w konkretnej dacie i godzinie. Pozwala to zaplanować zasilenie, na przykład start konektora w nocy albo restart na początku uzgodnionego okna przetwarzania.

InterwałCykliczne wykonanie akcji konektora

Monitor Interval Action Runner może powtarzać tę samą akcję konektora. Przykładowo interwał godzinowy umożliwia uruchamianie operacji na konektorze w przewidywalnych punktach czasu.

Konfiguracja snapshotów

Faktyczne zachowanie konektora po starcie lub restarcie wynika z konfiguracji Debezium. Kluczowym parametrem jest snapshot.mode, który określa, czy konektor wykona snapshot przy starcie, pominie snapshot, czy wykona go tylko w określonych sytuacjach odtworzeniowych.

KonfiguracjaZnaczenie operacyjneTypowe użycie w harmonogramie GIFRÖST
snapshot.mode=initialWykonuje snapshot, gdy nie istnieją offsety, a następnie przechodzi do streamingu zmian.Pierwszy start konektora albo pierwsze zaplanowane uruchomienie potoku.
snapshot.mode=alwaysWykonuje snapshot przy każdym starcie konektora, a po nim streamuje kolejne zmiany.Zaplanowane pełne odświeżenie przy starcie lub restarcie konektora.
snapshot.mode=initial_onlyWykonuje snapshot i zatrzymuje konektor przed streamingiem zdarzeń zmian.Jednorazowe zasilenie wsadowe bez dalszego ciągłego CDC.
snapshot.mode=no_dataPomija snapshot danych i streamuje od dostępnej pozycji w logu.Tryb tylko dla zmian bieżących, gdy aktualny stan celu jest już zaufany.
snapshot.mode=when_neededWykonuje snapshot tylko wtedy, gdy brakuje offsetów albo zapisana pozycja logu jest niedostępna.Start odtworzeniowy, w którym snapshot ma zostać wykonany tylko wtedy, gdy jest potrzebny.
Źródła techniczne

Debezium opisuje snapshoty ad hoc przez sygnały w dokumentacji Sending signals to a Debezium connector oraz tryby snapshot.mode dla PostgreSQL w Debezium connector for PostgreSQL.