Zbuduj potok przetwarzania milionów zdarzeń w czasie rzeczywistym

Nowoczesne aplikacje generują nieustanny strumień kliknięć, transakcji, odczytów z czujników, wywołań API i logów.  Przekształcaj nieprzerwane strumienie dużych ilości danych w wiarygodne wyniki analiz. Ta architektura przeznaczona dla przedsiębiorstw łączy gromadzenie, przetwarzanie i analizę danych, zapewniając trwałe zapisywanie napływających danych i szybkie wykonywanie zapytań na potrzeby zespołów działających w obszarach AdTech, FinTech, IoT i obserwowalności, które muszą podejmować działania na podstawie aktualnych danych.
[object Object]

Dwie blokady potoku przetwarzania zdarzeń w czasie rzeczywistym

Potoki przetwarzania zdarzeń w czasie rzeczywistym mogą zawodzić na jednym z dwóch etapów: przepływ zdarzeń przez warstwę ładowania danych nie jest niezawodny albo platforma nie umożliwia ich szybkiej analizy za pomocą zapytań. Są to dwa odrębne problemy, które wymagają różnych narzędzi, a rozwiązanie tylko jednego z nich prowadzi do powstawania kosztownych stosów technologicznych podatnych na awarie.

Bez niezawodnej infrastruktury do strumieniowego przesyłania danych, zapewniającej ich trwałość, rozproszeni producenci i konsumenci danych stają się ze sobą ściśle powiązani. Producenci to aplikacje, które generują zdarzenia i przesyłają je do tematów Kafka, natomiast konsumenci to usługi, które odczytują te zdarzenia. Producenci zapisują zdarzenia bezpośrednio w kolejkach, bazach danych lub niestandardowych usługach, a gdy konsument przestaje działać lub nie nadąża z przetwarzaniem zdarzeń, producent zostaje zablokowany albo zaczyna gubić zdarzenia.

Ponadto PostgreSQL i podobne bazy danych OLTP w środowisku Public Cloud są przeznaczone do wykonywania operacji na poziomie poszczególnych wierszy: wstawiania, aktualizowania i usuwania danych. Nie są przeznaczone do skanowania miliardów wierszy, agregowania danych według wielu wymiarów ani aktualizowania pulpitów nawigacyjnych co minutę. Wraz ze wzrostem liczby zdarzeń zapytania, które wcześniej zwracały wyniki w ciągu 200 ms, zaczynają trwać kilka sekund, następnie kilkadziesiąt sekund, a w końcu nawet kilka minut. System staje się blokadą utrudniającą podejmowanie decyzji dotyczących produktu.
[object Object]

Działaj bez obaw nawet na skalę dużego przedsiębiorstwa

Potok przetwarzania zdarzeń w czasie rzeczywistym obejmuje replikację, tworzenie kopii zapasowych i monitorowanie
[object Object]
Kafka umożliwia niezawodne przetwarzanie strumieniowe
[object Object]
ClickHouse umożliwia szybką analizę danych
[object Object]
Replikacja, kopie zapasowe i monitorowanie
[object Object]
Regiony europejskie i mechanizmy kontrolne zapewniające suwerenność danych

Architektura referencyjna: Apache Kafka + ClickHouse

Apache Kafka jako fundament infrastruktury przetwarzania strumieniowego

Kafka pełni rolę centralnego układu nerwowego obsługującego zdarzenia. Producenci zapisują zdarzenia w tematach, które są logicznie uporządkowane i podzielone na partycje rozmieszczone pomiędzy różnymi brokerami. Każda partycja może być niezależnie odczytywana przez konsumentów, co pozwala poziomo skalować prędkość transmisji danych w Kafce. Grupy konsumentów odczytują dane z tych partycji, a każdy konsument w grupie odpowiada za określony podzbiór partycji.

Partycje mają kluczowe znaczenie dla prędkości transmisji danych. Temat z większą liczbą partycji może obsługiwać więcej operacji zapisu i większą liczbę konsumentów równolegle, z ograniczeniem do liczby partycji. Grupy konsumentów umożliwiają ponowne odczytywanie i przetwarzanie zdarzeń. Schematami danych aplikacji zarządza się zazwyczaj oddzielnie, często za pomocą Schema Registry, dzięki czemu producenci i konsumenci mogą być rozwijani niezależnie, bez zakłócania wzajemnego działania. Zdarzenia są przechowywane przez konfigurowalny okres, co daje możliwość ich ponownego odczytania bez konieczności przetwarzania danych od nowa ze źródła. Ta trwałość przechowywania danych i stałe oddzielenie producentów od konsumentów sprawiają, że Kafka stanowi niezawodny fundament obsługi strumieni zdarzeń o dużym natężeniu.

ClickHouse jako warstwa OLAP działająca w czasie rzeczywistym

ClickHouse to kolumnowa, rozproszona baza danych przeznaczona do obsługi obciążeń roboczych związanych z analizą danych. Przechowuje dane kolumnowo, a nie wierszowo, dzięki czemu podczas wykonywania zapytań może pomijać niepotrzebne kolumny i uzyskiwać wysoki stopień kompresji danych. W połączeniu z silnikiem przechowywania danych, zoptymalizowanym pod kątem odczytu sekwencyjnego i stosowania warunków filtrowania już na etapie odczytu danych (predicate pushdown), pozwala to ClickHouse szybko skanować miliardy wierszy i zwracać zagregowane wyniki w ciągu milisekund. Nowe zdarzenia mogą być zapisywane w czasie rzeczywistym, a ClickHouse może wstępnie agregować je za pomocą widoków zmaterializowanych, które są aktualizowane wraz z napływem danych. Umożliwia to ciągłą aktualizację pulpitów nawigacyjnych i generowanie alertów bez konieczności oczekiwania na wykonanie zadania wsadowego lub kolejny zaplanowany cykl przetwarzania ETL. Baza danych została zaprojektowana z myślą o skalowaniu poziomym – wraz ze wzrostem liczby zdarzeń można dodawać kolejne węzły, zwiększając pojemność pamięci masowej i moc obliczeniową.

Object Storage jako warstwa „zimnych” danych do przechowywania starszych zdarzeń

Nie wszystkie dane muszą być przechowywane w hot storage – utrzymywanie wszystkich zdarzeń na lokalnych dyskach ClickHouse staje się kosztowne i zbędne. Typowym rozwiązaniem jest przenoszenie starszych danych do usługi OVHcloud Object Storage (zgodnej z S3)*, przy jednoczesnym pozostawieniu najnowszych danych w ClickHouse w celu zapewnienia szybkiego wykonywania zapytań. Zdarzenia starsze niż określony próg czasowy są przechowywane w tej warstwie i odczytywane na żądanie, gdy potrzebna jest bardziej szczegółowa analiza danych historycznych. Takie podejście obniża koszty długoterminowego przechowywania danych, zachowując możliwość wykonywania zapytań obejmujących cały zbiór danych. 

W przypadku wielu praktycznych use case związanych z przetwarzaniem danych warstwa szybkiego dostępu (ClickHouse) przechowuje dane z ostatnich dni lub tygodni na potrzeby pulpitów nawigacyjnych i alertów w czasie rzeczywistym, natomiast warstwa „zimnych” danych (OVHcloud Object Storage) przechowuje dane historyczne z wielu miesięcy lub lat na potrzeby zapewnienia zgodności z przepisami, audytów i okresowych pogłębionych analiz. Takie rozdzielenie pozwala utrzymać przewidywalne koszty operacyjne i skalować potok przetwarzania danych bez napotykania sztywnych ograniczeń pojemności pamięci masowej aplikacji.


Natywna integracja ClickHouse za pomocą silnika Kafka

Apache KafkaKafka ConnectClickHouse
Istnieją trzy główne podejścia: wykorzystanie natywnego silnika tabel Kafka w ClickHouse, widoków zmaterializowanych opartych na tym silniku oraz Kafka Connect do integracji z systemami zewnętrznymi.

ClickHouse ma wbudowany silnik tabel Kafka, który umożliwia bezpośrednią subskrypcję tematów Kafka. Definiujesz tabelę korzystającą z silnika Kafka, podajesz nazwę tematu, listę brokerów i grupę konsumentów, a ClickHouse zaczyna pobierać zdarzenia z platformy Kafka, traktując je jak wiersze zwykłej tabeli. Jest to bezpośrednia, natywna integracja, która nie wymaga dodatkowego middleware. Silnik Kafka w ClickHouse jest przeznaczony do strumieniowego ładowania danych. Odczytuje rekordy z tematu, parsuje je zgodnie z określonym przez Ciebie formatem (JSON, Avro, Protobuf itp.) i udostępnia jako wiersze, na których można wykonywać zapytania lub które można wstawiać do innych tabel.
Schemat techniczny potoku przetwarzania zdarzeń w czasie rzeczywistym z platformą Apache Kafka w centrum, łączącą aplikacje, bazy danych, platformy odbierające dane i
Potok przetwarzania zdarzeń w czasie rzeczywistym gromadzi na bieżąco strumienie danych o wyświetleniach reklam, kliknięciach i konwersjach. Zespoły odpowiedzialne za kampanie mogą monitorować tempo ich realizacji, aktualizować sygnały wykorzystywane do atrybucji konwersji i wykrywać nietypowe wzorce ruchu, zanim zostaną one ujawnione w raportach generowanych z opóźnieniem w ramach przetwarzania wsadowego. Dane dotyczące poszczególnych typów zdarzeń pozostają dostępne do dalszej analizy i ponownego przeliczania wyników.

Dane o zdarzeniach transakcyjnych zasilają aktualizowane na bieżąco wskaźniki ryzyka, mechanizmy analizy zachowań i alerty operacyjne. Analitycy mogą łącznie analizować aktywność związaną z kontami, płatnościami i urządzeniami, co pomaga zespołom prowadzącym dochodzenia identyfikować podejrzane sekwencje zdarzeń i reagować na podstawie aktualnych informacji, zamiast czekać na zaplanowane przetwarzanie danych.

Czujniki, urządzenia podłączone do sieci i pojazdy nieprzerwanie generują dane telemetryczne. Potok przetwarzania danych gromadzi pomiary, informacje o zmianach stanu i sygnały o usterkach, umożliwiając zespołom ocenę stanu urządzeń, monitorowanie flot oraz wykrywanie warunków pracy wymagających interwencji.

Logi, metryki i ślady trafiają do ClickHouse, gdzie można je szybko filtrować i korelować między poszczególnymi usługami. Silnik tabel Kafka umożliwia strumieniowe przesyłanie danych do tabel analitycznych, dzięki czemu zespoły odpowiedzialne za platformę mogą analizować incydenty, porównywać zachowanie systemów i obsługiwać pulpity nawigacyjne bez konieczności tworzenia oddzielnych ścieżek ładowania danych dla każdego typu sygnału.
Potok przetwarzania zdarzeń w czasie rzeczywistym gromadzi na bieżąco strumienie danych o wyświetleniach reklam, kliknięciach i konwersjach. Zespoły odpowiedzialne za kampanie mogą monitorować tempo ich realizacji, aktualizować sygnały wykorzystywane do atrybucji konwersji i wykrywać nietypowe wzorce ruchu, zanim zostaną one ujawnione w raportach generowanych z opóźnieniem w ramach przetwarzania wsadowego. Dane dotyczące poszczególnych typów zdarzeń pozostają dostępne do dalszej analizy i ponownego przeliczania wyników.

Dostosuj strukturę napływających zdarzeń, aby przyspieszyć podejmowanie decyzji

Wstępnie agreguj regularnie obliczane wskaźniki

Widoki zmaterializowane na bieżąco obliczają sumy, wskaźniki i metryki z podziałem na grupy w miarę napływu zdarzeń, ograniczając konieczność wielokrotnego wykonywania tych samych operacji podczas obsługi zapytań.

Dostosuj tabele do wzorców dostępu do danych

Sortuj dane według czasu i wymiarów najczęściej wykorzystywanych do filtrowania, aby ograniczyć odczyt niepotrzebnych rekordów podczas analizy incydentów.

Odczytuj tylko potrzebne pola

Wybór kolumn ogranicza skanowanie danych do atrybutów wymaganych przez dany pulpit nawigacyjny, alert lub zapytanie eksploracyjne.

Dostosuj okresy przechowywania danych do potrzeb

Oddziel często odczytywane rekordy od danych wykorzystywanych rzadziej. Tabele zaprojektowane z uwzględnieniem okresów przechowywania danych pozwalają utrzymać czas wykonywania analiz na potrzeby widoków operacyjnych poniżej sekundy, a jednocześnie umożliwiają sprawne badanie incydentów nawet przy rosnącej ilości danych historycznych.

Koszt oczekiwania

OpóźnienieETLTerraform
Gdy potok przetwarzania danych aplikacji działa zbyt wolno lub jest zawodny, skutki są wymierne. Czas reakcji systemów wykrywania oszustw wydłuża się z kilku sekund do kilku minut, co w sektorze FinTech bezpośrednio przekłada się na straty finansowe i ryzyko utraty reputacji. Długie cykle raportowania utrudniają podejmowanie decyzji dotyczących produktu i zmuszają zespoły do korzystania z danych typu snapshot, które w chwili ich przeglądania są już nieaktualne. Aby temu zaradzić, zespoły zaczynają wprowadzać doraźne poprawki w stosie technologicznym. Niestandardowe zadania ETL, ręcznie konfigurowane kolejki komunikatów i widoki raportowe stopniowo tworzą doraźnie zbudowany potok przetwarzania danych, który wymaga ręcznego utrzymania. Rzeczywisty koszt to nie tylko bezpośrednie opóźnienia. To również narzut operacyjny, dług techniczny i brak możliwości dalszego rozwijania funkcji działających w czasie rzeczywistym, ponieważ zespół jest zajęty utrzymywaniem istniejącego potoku przetwarzania danych.
[object Object]

Przypisz każdej warstwie jasno określoną funkcję

Fundament infrastruktury przetwarzania strumieniowego

Buforuj i porządkuj strumienie zdarzeń o dużym natężeniu oraz umożliwiaj ich ponowne odtwarzanie, aby producenci pozostawali niezależni od procesów przetwarzania danych i obciążeń roboczych związanych z analizą danych.

Obsługa zapytań analitycznych

Udostępniaj aktualne dane o zdarzeniach na potrzeby szybkiego wykonywania zapytań operacyjnych, obsługi pulpitów nawigacyjnych i badania incydentów, utrzymując jednocześnie oddzielne środowisko do obsługi obciążeń analitycznych.

Warstwa „zimnych” danych

Przechowuj starsze dane historyczne poza pamięcią masową zoptymalizowaną pod kątem wydajności. Takie rozdzielenie zapewnia długoterminowy dostęp do danych bez konieczności przechowywania wszystkich zdarzeń w warstwie analitycznej szybkiego dostępu. Typowym rozwiązaniem jest przenoszenie starszych danych do usługi OVHcloud Object Storage

Zarządzana obsługa operacyjna i wdrażanie

OVHcloud zarządza replikacją, tworzeniem kopii zapasowych i monitorowaniem w całej architekturze usług. Zespoły mogą wdrażać zasoby za pomocą Panelu klienta OVHcloud lub definiować odtwarzalne środowiska przy użyciu narzędzia Terraform. 

Wdróż potok przetwarzania zdarzeń w czasie rzeczywistym w kilka minut

Uruchomienie potoku przetwarzania zdarzeń w czasie rzeczywistym w OVHcloud zajmuje zaledwie kilka minut. Możesz wdrożyć klaster usługi Managed Apache Kafka oraz instancję usługi Managed ClickHouse za pomocą Panelu klienta OVHcloud lub narzędzia Terraform. Replikacja, tworzenie kopii zapasowych i monitorowanie są domyślnie włączone.

Zespołom, które potrzebują pomocy w doborze odpowiednich zasobów infrastruktury, OVHcloud zapewnia bezpośredni kontakt ze specjalistami ds. infrastruktury danych, również w zakresie usługi Managed Databases for PostgreSQL. Mogą oni ocenić aktualną liczbę przetwarzanych zdarzeń i charakterystykę zapytań oraz porównać koszty proponowanego rozwiązania z kosztami obecnie wykorzystywanej infrastruktury. Niezależnie od tego, czy jesteś inżynierem danych, który potrzebuje wyników analiz miliardów wierszy w czasie rzeczywistym bez konieczności poświęcania dużej ilości czasu na zarządzanie infrastrukturą, czy dyrektorem ds. danych, któremu zależy na ograniczeniu obciążeń operacyjnych i przewidywalnych kosztach korzystania z chmury, zestaw usług zarządzanych eliminuje dodatkowy nakład pracy związany z obsługą infrastruktury, a jednocześnie pozwala zachować przenośność architektury opartej na technologiach open source.

*S3 jest zastrzeżonym znakiem towarowym Amazon Technologies, Inc. Usługi OVHcloud nie są sponsorowane ani zatwierdzane przez Amazon Technologies, Inc., ani w żaden sposób z nią powiązane.
OVHcloud_Cloud_Database_Main_600x400.png
Zacznij tworzyć rozwiązanie zapewniające wiarygodne wyniki analiz w czasie rzeczywistym
Samodzielne uruchamianie i utrzymywanie Apache Kafka oraz ClickHouse jest możliwe, ale wymaga znacznego nakładu pracy inżynierów i wiąże się z ryzykiem operacyjnym. OVHcloud oferuje usługi Managed Apache Kafka i Managed ClickHouse jako rozwiązania w pełni zarządzane, kładąc nacisk na europejską suwerenność danych, przewidywalne ceny i wysoką dostępność. 
Poznaj nasze usługi przetwarzania strumieniowego, analityki i przechowywania danych, a następnie przekształcaj duże ilości zdarzeń w wiarygodne wyniki analiz, które można uzyskiwać za pomocą zapytań, ograniczając jednocześnie nakład pracy związany z utrzymaniem infrastruktury.
Rozpocznij tworzenie