Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera szczegółowe informacje na temat używania biblioteki klienta strumieni platformy Kafka z Azure Event Hubs.
Uwaga
Funkcje strumieni platformy Kafka są dostępne tylko w publicznej wersji zapoznawczej dla usług Event Hubs Premium i Dedykowanych.
Omówienie
Apache Kafka Streams to tylko biblioteka klienta języka Java, która udostępnia platformę do przetwarzania danych przesyłanych strumieniowo i tworzenia aplikacji w czasie rzeczywistym względem danych przechowywanych w tematach platformy Kafka. Wszystkie operacje przetwarzania są ograniczone do klienta, natomiast tematy platformy Kafka działają jako magazyn danych dla danych pośrednich, zanim dane wyjściowe będą zapisywane w temacie docelowym.
Usługa Event Hubs udostępnia punkt końcowy platformy Kafka do użycia z istniejącymi aplikacjami klienckimi platformy Kafka jako alternatywę dla uruchamiania własnego klastra platformy Kafka. Usługa Event Hubs współpracuje z wieloma istniejącymi aplikacjami platformy Kafka. Aby uzyskać więcej informacji, zobacz Event Hubs for Apache Kafka (Usługa Event Hubs dla platformy Apache Kafka).
Używanie strumieni platformy Kafka z usługą Azure Event Hubs
Usługa Azure Event Hubs natywnie obsługuje zarówno protokół AMQP, jak i kafka. Jednak aby zapewnić zgodne zachowanie strumieni platformy Kafka, niektóre z domyślnych parametrów konfiguracji muszą zostać zaktualizowane dla klientów platformy Kafka.
Właściwości | Domyślne zachowanie usługi Event Hubs | Zmodyfikowane zachowanie strumieni platformy Kafka | Wyjaśnienie |
---|---|---|---|
messageTimestampType |
ustaw wartość na AppendTime |
należy ustawić wartość na CreateTime |
Strumienie platformy Kafka korzystają z sygnatury czasowej tworzenia, a nie dołączania znacznika czasu |
message.timestamp.difference.max.ms |
maksymalna dozwolona wartość to 90 dni | Właściwość służy tylko do zarządzania znacznikami czasu przeszłości. Czas przyszły jest ustawiony na 1 godzinę i nie można go zmienić. | Jest on zgodny ze specyfikacją protokołu Kafka |
min.compaction.lag.ms |
maksymalna dozwolona wartość to dwa dni | ||
Tematy dotyczące nieskończonego przechowywania | obcinanie na podstawie rozmiaru 250 GB dla każdej partycji tematu | ||
Usuwanie interfejsu API rekordów dla tematów dotyczących nieskończonego przechowywania | Nie zaimplementowano. Aby obejść ten problem, można go zaktualizować i można ustawić ograniczony czas przechowywania. | Ta funkcja będzie obsługiwana w ogólnie dostępnej wersji |
Inne uwagi
Oto niektóre z innych zagadnień, które należy wziąć pod uwagę.
- Aplikacje klienckie platformy Kafka muszą mieć przyznane uprawnienia do zarządzania, odczytu i zapisu dla całej przestrzeni nazw, aby móc tworzyć tymczasowe tematy na potrzeby przetwarzania strumienia.
- Tematy tymczasowe i partycje są liczone do limitu przydziału dla danej przestrzeni nazw. Należy je wziąć pod uwagę podczas aprowizacji przestrzeni nazw lub klastra.
- Nieskończony czas przechowywania dla Sklepu "Offset" jest ograniczony przez maksymalny czas przechowywania wiadomości w jednostce magazynowej (SKU). Sprawdź limity przydziału usługi Event Hubs dla tych wartości specyficznych dla warstwy.
Obejmują one aktualizację konfiguracji tematu w celu messageTimestampType
użycia CreateTime
(czyli czasu tworzenia zdarzenia) zamiast (czyli czasu dołączania dziennika AppendTime
).
Aby zastąpić domyślne zachowanie (wymagane), poniższe ustawienie należy ustawić w usłudze Azure Resource Manager (ARM).
Uwaga
Wyświetlane są tylko określone części szablonu usługi ARM, aby wyróżnić konfigurację, która musi zostać zaktualizowana.
{
"parameters": {
"namespaceName": "contoso-test-namespace",
"resourceGroupName": "contoso-resource-group",
"eventHubName": "contoso-event-hub-kafka-streams-test",
...
"parameters": {
"properties": {
...
"messageTimestampType": "CreateTime",
"retentionDescription": {
"cleanupPolicy": "Delete",
"retentionTimeInHours": -1,
"tombstoneRetentionTimeInHours": 1
}
}
}
}
}
Pojęcia dotyczące strumieni platformy Kafka
Strumienie platformy Kafka zapewniają prostą warstwę abstrakcji za pośrednictwem interfejsów API producenta i konsumenta platformy Kafka, aby pomóc deweloperom szybciej rozpocząć pracę ze scenariuszami przesyłania strumieniowego w czasie rzeczywistym. Biblioteka o lekkiej wadze zależy od brokera zgodnego z platformą Apache Kafka (na przykład usługi Azure Event Hubs) dla warstwy wewnętrznej obsługi komunikatów i zarządza magazynem stanu lokalnym odpornym na błędy. Dzięki transakcyjnym interfejsowi API biblioteka strumieni platformy Kafka obsługuje zaawansowane funkcje przetwarzania, takie jak dokładnie jednokrotne przetwarzanie i jeden rekord w czasie przetwarzania.
Rekordy wychodzące z zamówienia korzystają z operacji okien opartych na czasie zdarzenia.
Uwaga
Zalecamy zapoznanie się z dokumentacją usługi Kafka Streams i podstawowymi pojęciami dotyczącymi usługi Kafka Streams.
Strumienie
Strumień to abstrakcyjna reprezentacja tematu platformy Kafka. Składa się z niezwiązanego, ciągłego aktualizowania zestawu danych niezmiennych rekordów danych, gdzie każdy rekord danych jest parą klucz-wartość.
Topologia przetwarzania strumienia
Aplikacja strumieniowa platformy Kafka definiuje logikę obliczeniową za pośrednictwem języka DAG (skierowanego grafu acyklicznego) reprezentowanego przez topologię procesora. Topologia procesora składa się z procesorów strumieni (węzłów w topologii), które reprezentują krok przetwarzania połączony ze strumieniami (krawędzie w topologii).
Procesory strumienia mogą być połączone łańcuchem do nadrzędnych procesorów lub procesorów podrzędnych, z wyjątkiem niektórych przypadków specjalnych:
- Procesory źródłowe — te procesory nie mają żadnych procesorów nadrzędnych i odczytują bezpośrednio z jednego lub większej liczby strumieni. Następnie można je połączyć w łańcuch do procesorów podrzędnych.
- Procesory ujścia — te procesory nie mają żadnych procesorów podrzędnych i muszą zapisywać bezpośrednio w strumieniu.
Topologię przetwarzania strumieniowego można zdefiniować za pomocą języka DSL strumieni platformy Kafka lub interfejsu API procesora niższego poziomu.
Podwójność strumieni i tabeli
Strumienie i tabele to 2 różne, ale przydatne abstrakcje udostępniane przez rozszerzenie DSL strumieni platformy Kafka, modelując zarówno szeregi czasowe, jak i formaty danych relacyjnych, które muszą współistnieć w przypadku użycia przetwarzania strumieniowego.
Kafka rozszerza go dalej i wprowadza dwoistość między strumieniami i tabelami, gdzie
- Strumień można traktować jako dziennik zmian tabeli i
- Tabelęmożna traktować jako migawkę najnowszej wartości każdego klucza w strumieniu.
Ta podwójność umożliwia używanie tabel i strumieni zamiennie zgodnie z wymaganiami przypadku użycia.
Na przykład
- Łączenie statycznych danych klienta (modelowanych jako tabela) z transakcjami dynamicznymi (modelowane jako strumień) i
- Dołączanie do zmieniających się pozycji portfela w portfelu dziennym (modelowane jako strumień) przy użyciu najnowszego źródła danych rynku (modelowanego jako strumienia).
Czas
Strumienie platformy Kafka umożliwiają pozyskiwanie poza kolejnością rekordów danych i korzystanie z funkcji prolongaty, które nadal są uwzględniane w przetwarzaniu. Aby upewnić się, że to zachowanie jest deterministyczne, istnieje więcej pojęć czasu w strumieniach platformy Kafka. To na przykład:
- Czas utworzenia (znany również jako "czas zdarzenia") — jest to czas, w którym wystąpiło zdarzenie i został utworzony rekord danych.
- Czas przetwarzania — jest to czas, w którym rekord danych jest przetwarzany przez aplikację do przetwarzania strumieniowego (lub gdy jest używany).
- Czas dołączania (znany również jako "czas tworzenia") — jest to czas, w którym dane są przechowywane i zatwierdzane w magazynie brokera platformy Kafka. Różni się on od czasu tworzenia ze względu na różnicę czasu między utworzeniem zdarzenia a faktycznym pobraniem przez brokera.
Operacje stanowe
Zarządzanie stanem umożliwia zaawansowane aplikacje do przetwarzania strumieniowego, takie jak łączenie i agregowanie danych z różnych strumieni. Jest to osiągane w przypadku magazynów stanów udostępnianych przez usługi Kafka Streams i uzyskiwanych do ich dostępu przy użyciu operatorów stanowych w języku DSL strumieni platformy Kafka.
Przekształcenia stanowe w języku DSL obejmują:
- Agregowania
- Przyłączenie
- Okno (w ramach agregacji i sprzężeń)
- Stosowanie niestandardowych procesorów i transformatorów, które mogą być stanowe, w celu integracji interfejsu API procesora
Okno i łaska
Operacje okien w języku DSL strumieni platformy Kafka umożliwiają deweloperom kontrolowanie sposobu grupowania rekordów dla danego klucza dla operacji stanowych, takich jak agregacje i sprzężenia.
Operacje okien umożliwiają również określenie okresu prolongaty, aby zapewnić pewną elastyczność rekordów poza kolejnością dla danego okna. Rekord przeznaczony dla danego okna i pojawia się po danym oknie, ale w okresie prolongaty jest akceptowany. Rekordy przychodzące po zakończeniu okresu prolongaty są odrzucane.
Aplikacje muszą korzystać z kontrolek okien i okresów prolongaty, aby poprawić odporność na uszkodzenia rekordów poza kolejnością. Odpowiednie wartości różnią się w zależności od obciążenia i muszą być identyfikowane empirycznie.
Gwarancje przetwarzania
Użytkownicy biznesowi i techniczni starają się wyodrębnić kluczowe informacje biznesowe z danych wyjściowych obciążeń przetwarzania strumieniowego, co przekłada się na wysokie wymagania dotyczące gwarancji transakcyjnych. Strumienie platformy Kafka współpracują z transakcjami platformy Kafka w celu zapewnienia gwarancji przetwarzania transakcji przez integrację z podstawowym systemem magazynu brokerów zgodnych z platformą Kafka (takich jak Azure Event Hubs) w celu zapewnienia, że zatwierdzenia przesunięcia i aktualizacje magazynu stanów są zapisywane niepodzielnie.
Aby zapewnić gwarancje przetwarzania transakcyjnego, processing.guarantee
ustawienie w konfiguracjach strumieni platformy Kafka musi zostać zaktualizowane z wartości domyślnej at_least_once
na exactly_once_v2
(w przypadku wersji klienta w systemie Apache Kafka 2.5) lub exactly_once
(w przypadku wersji klienta przed platformą Apache Kafka 2.5.x).
Następne kroki
W tym artykule przedstawiono wprowadzenie do usługi Event Hubs dla platformy Kafka. Aby dowiedzieć się więcej, zobacz Przewodnik dla deweloperów platformy Apache Kafka dotyczący usługi Azure Event Hubs.
Aby zapoznać się z samouczkiem z instrukcjami krok po kroku dotyczącymi tworzenia centrum zdarzeń i uzyskiwania do niego dostępu przy użyciu sygnatury dostępu współdzielonego lub protokołu OAuth, zobacz Szybki start: przesyłanie strumieniowe danych za pomocą usługi Event Hubs przy użyciu protokołu Kafka.
Zapoznaj się również z przykładami OAuth w witrynie GitHub.