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.