Skip to main content
ALTWORX Dokumentace
Přepnout tmavý/světlý/automatický režim Přepnout tmavý/světlý/automatický režim Přepnout tmavý/světlý/automatický režim Zpět na domovskou stránku

Úvod

Proces normalizace

Normalizace je proces, při kterém dochází k převedení nezpracovaného zprávy do formátu, který je srozumitelný pro její další zpracování scénáři. Scénáře vyžadují vysoce strukturovaná, analyzovaná a uspořádaná data. RAW data jsou obvykle nestrukturovaná bez potřebného uspořádání.

Normalizéry tedy RAW topicy zpracovávají a poté je opět ukládají do uložiště Kafka. Zpracované topicy označujeme jako Runtime topicy.

Neděje se tak samo sebou. Aby normalizér prováděl nějakou činnost musí být nakonfigurován. Konfigurací lze vytvořit a spouštět tzv. pipelines.

Pipeline provádí proces normalizace na konkrétním topicu, s konkrétním nastavením a konkrétní normalizační funkcí podle dané konfigurace. Takových pipeline může běžet v normalizéru více. Pipelines jsou na sobě nezávislé a nijak se neovlivňují. Samotná pipeline pak uvnitř sebe obsahuje několik komponent, které dohromady provádí celou normalizaci.

Jak normalizace probíhá

Normalizace zahrnuje tyto funkce:

  • parsování originálního formátu RAW topiců,
  • extrakci potřebných polí ze zprávy včetně těch, které obsahují externí čas, kdy zaznamenaná událost nastala,
  • třídění zpráv podle externího času,
  • tikání - kdy je zjišťována živost aktuálních Runtime topiců.

Parsování

Parsování RAW zprávy je nezbytné, protože RAW zpráva nemá předem stanovený formát. Může jím být JSON, XML nebo jakýkoli jiný textový či binární formát. Parsovací funkce je zadána v konfiguraci.

Parsování je plně v režii uživatele. Pro napsání parsovací funkce můžete využít knihovny pro běžné formáty nebo si pro tuto funkci napsat vlastní kód.

Parsování zavádí RAW topicu strukturu. Může však být potřeba ji ještě dále transformovat, aby byl formát pro scénáře optimální. Při tom mohou být vyřazena data, která nejsou potřebná. Ta se mohou přidat zpět později změnou normalizační funkce. Celý proces normalizace je možné z RAW dat absolvovat znovu.

Extrakce potřebných polí včetně polí s externím časem

Existují dva časy týkající se příchozích zpráv:

  1. čas, kdy událost skutečně nastala - externí čas,
  2. čas přijetí zprávy systémem Altworx.

Je důležité si uvědomit, že externí čas a čas přijetí zprávy nejsou stejné a v závislosti na zdroji mohou být více či méně vzdálené. Rozdíl těchto časů se považuje za kvalitu zdroje, tzn. čím menší rozdíl, tím lepší. Pokud je rozdíl velký, může být obtížné takový datový tok zpracovat. Externí čas je nesen samotnou zprávou, takže musí být zpracován stejně jako ostatní data. Pak se určí, jaká část zprávy je externí čas, přidá se do obálky spolu s dalšími metadaty a stává se časovým razítkem zprávy.

Pokud externí čas neexistuje, nemá požadovanou kvalitu nebo není žádoucí jako externí čas, je možné místo externího času použít čas přijetí.

Uspořádání zpráv podle času

Další důležitou vlastností normalizace je uspořádání zpráv. Pro zjednodušení návrhů scénářů jsou zprávy v Runtime topicích seřazeny podle časových značek.

Při normalizaci se pro seřazování zpráv podle času používá princip posuvného okna. Toto okno o určité velikosti se postupně posouvá po datovém toku zpráv. Zprávy, které padnou dovnitř okna se seřadí dle jejich externího času. Okno se posunuje s časem a zprávy, jež z okna tímto způsobem vypadnou jsou seřazené.

Pokud se stane, že zpráva by měla být zařazena mimo dané okno, není možné ji mezi ostatní zprávy seřadit. Odehrála se buď v příliš vzdálené minulosti či budoucnosti. Dle zvolené politiky řazení zpráv je buď ze zpracování vyřazena a zapsána do Jitter topicu (výchozí nastavení discard), nebo je její čas upraven tak, aby se dala do okna zařadit (nastavení adjust).

Aby mohl být návrh scénáře významně jednodušší, čas v něm postupuje pouze dopředu.

Zpracované zprávy (Runtime topicy) již nejsou prostým textem jako RAW topicy. Jsou kódovány pomocí Erlang ETF a jako takové nejsou přímo čitelné. Ke kontrole zpráv v Runtime topicu nelze použít nástroje třetích stran, obvykle jim chybí správná podpora dekódování pro Erlang ETF. Proto je použití nástrojů ALTWORX upřednostňovaným způsobem.

Tikání normalizéru

Další funkcí normalizéru je tikání, kdy normalizér zjišťuje živost aktuálních Runtime topiců. Mohou totiž nastat dvě nežádoucí situace:

  1. nepřichází zprávy - RAW topicy,
  2. nepracuje normalizér.

Pokud nepřichází žádné zprávy, normalizér začne po určité době vytvářet virtuální zprávy namísto těch skutečných. V konfiguraci pipeline můžeme nastavit, od jaké chvíle se tyto zprávy budou vytvářet a jak často.

Funkce tikání je velmi důležitá také proto, že normalizér detekuje i ta období, ve kterých se nic nestalo.