Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Definice grafů WebAssembly (WASM) pro grafy toku dat jsou ve verzi PREVIEW. Tato funkce má omezení a není určená pro produkční úlohy.
Další podmínky použití pro Microsoft Azure Preview najdete v právních podmínkách, které se vztahují na funkce Azure, které jsou v beta verzi, preview nebo ještě nejsou vydané v obecné dostupnosti.
Definice grafů jsou centrální pro vývoj WASM, protože definují, jak se moduly připojují ke zpracování pracovních postupů. Pochopení vztahu mezi definicemi grafu a grafy toku dat vám pomůže efektivně vyvíjet.
Tento článek se zaměřuje na vytváření a konfiguraci definic grafu YAML. Informace o nasazení a testování grafů toku dat WASM najdete v tématu Použití WebAssembly s grafy toku dat.
Důležité
Grafy toku dat aktuálně podporují pouze koncové body MQTT, Kafka a OpenTelemetry. Jiné typy koncových bodů, jako jsou Data Lake, Microsoft Fabric OneLake, Azure Data Explorer a Local Storage, se nepodporují. Další informace najdete v tématu Známé problémy.
Struktura definice grafu
Definice grafu se řídí formálním schématem JSON , které ověřuje strukturu a zajišťuje kompatibilitu. Konfigurace zahrnuje:
- Požadavky na moduly pro kompatibilitu verzí rozhraní API a knihovny hostitelů
- Konfigurace modulů pro parametry modulu a přizpůsobení operátorů
- Operace definující uzly zpracování v pracovním postupu
- Připojení, která určují směrování toku dat mezi operacemi
- Schémata pro volitelné ověření dat
Základní struktura grafu
moduleRequirements:
apiVersion: "1.1.0"
hostlibVersion: "1.1.0"
operations:
- operationType: "source"
name: "data-source"
- operationType: "map"
name: "my-operator/map"
module: "my-operator:1.0.0"
- operationType: "sink"
name: "data-sink"
connections:
- from: { name: "data-source" }
to: { name: "my-operator/map" }
- from: { name: "my-operator/map" }
to: { name: "data-sink" }
Kompatibilita verzí
Tato moduleRequirements část zajišťuje kompatibilitu pomocí sémantické správy verzí:
moduleRequirements:
apiVersion: "1.1.0" # WASI API version for interface compatibility
hostlibVersion: "1.1.0" # Host library version providing runtime support
features: # Optional features required by modules
- name: "wasi-nn"
Návod
Pokyny k povolení vnitřního odvozování ONNX pomocí funkce wasi-nn najdete v článku Spuštění odvozování ONNX v grafech toku dat WebAssembly.
Příklad 1: Jednoduchá definice grafu
Jednoduchá definice grafu ukazuje základní třífázový kanál, který převádí data o teplotě z Fahrenheita na stupně Celsia:
metadata:
name: "Simple graph"
description: "A graph that transforms temperature from Fahrenheit to Celsius"
version: "1.0.0"
$schema: "https://www.schemastore.org/aio-wasm-graph-config-1.0.0.json"
vendor: "Microsoft"
moduleRequirements:
apiVersion: "1.1.0"
runtimeVersion: "1.1.0"
moduleConfigurations:
- name: module-temperature/map
parameters:
key1:
name: key2
description: key2
operations:
- operationType: "source"
name: "source"
- operationType: "map"
name: "module-temperature/map"
module: "temperature:1.0.0"
- operationType: "sink"
name: "sink"
connections:
- from:
name: "source"
to:
name: "module-temperature/map"
- from:
name: "module-temperature/map"
to:
name: "sink"
Podrobné pokyny k nasazení a pokyny k testování pro tento příklad najdete v příkladu 1: Základní nasazení s jedním modulem WASM.
Jak funguje jednoduchý graf
Tento graf vytvoří jednoduchý kanál zpracování dat:
- Zdrojová operace: Přijímá data o teplotě ze zdrojového koncového bodu toku dat.
-
Operace mapování: Zpracovává data pomocí modulu WASM (
temperature:1.0.0temperature WASM) - Operace jímky: Odesílá převedená data do cílového koncového bodu toku dat.
Modul teploty převede Fahrenheita na stupně Celsia pomocí standardního vzorce (F - 32) × 5/9 = C.
Vstupní formát:
{"temperature": {"value": 100.0, "unit": "F"}}
Výstupní formát:
{"temperature": {"value": 37.8, "unit": "C"}}
Příklad 2: Komplexní definice grafu
Komplexní definice grafu ukazuje sofistikovaný pracovní postup zpracování více snímačů, který zpracovává data o teplotě, vlhkosti a obrázku s pokročilými analýzami:
metadata:
name: "Complex graph"
description: "A graph that processes temperature and humidity data from sensors, along with snapshot data. The graph performs filtering, accumulation, and enrichment operations before sending the processed data to the sink."
version: "1.0.0"
$schema: "https://www.schemastore.org/aio-wasm-graph-config-1.0.0.json"
vendor: "Microsoft"
moduleRequirements:
apiVersion: "1.1.0"
runtimeVersion: "1.1.0"
moduleConfigurations:
- name: module-temperature/map
parameters:
key1:
name: key2
description: key2
- name: module-snapshot/branch
parameters:
snapshot_topic:
name: snapshot_topic
description: Transform app snapshot_topic in snapshot branch's init routine
operations:
- operationType: "source"
name: "source"
- operationType: delay
name: module-window/delay
module: window:1.0.0
- operationType: "map"
name: "module-format/map"
module: "format:1.0.0"
- operationType: map
name: module-snapshot/map
module: snapshot:1.0.0
- operationType: branch
name: module-snapshot/branch
module: snapshot:1.0.0
- operationType: accumulate
name: module-snapshot/accumulate
module: snapshot:1.0.0
- operationType: map
name: module-temperature/map
module: temperature:1.0.0
- operationType: branch
name: module-temperature/branch
module: temperature:1.0.0
- operationType: filter
name: module-temperature/filter
module: temperature:1.0.0
- operationType: accumulate
name: module-temperature/accumulate
module: temperature:1.0.0
- operationType: accumulate
name: module-humidity/accumulate
module: humidity:1.0.0
- operationType: concatenate
name: concatenate1
module:
- operationType: accumulate
name: module-collection/accumulate
module: collection:1.0.0
- operationType: map
name: module-enrichment/map
module: enrichment:1.0.0
- operationType: "sink"
name: "sink"
connections:
- from:
name: source
to:
name: module-window/delay
- from:
name: module-window/delay
to:
name: module-snapshot/branch
- from:
name: module-snapshot/branch
arm: "False"
to:
name: module-temperature/branch
- from:
name: module-snapshot/branch
arm: "True"
to:
name: module-format/map
- from:
name: module-format/map
to:
name: module-snapshot/map
- from:
name: module-snapshot/map
to:
name: module-snapshot/accumulate
- from:
name: module-snapshot/accumulate
to:
name: concatenate1
- from:
name: module-temperature/branch
arm: "True"
to:
name: module-temperature/map
- from:
name: module-temperature/branch
arm: "False"
to:
name: module-humidity/accumulate
- from:
name: module-humidity/accumulate
to:
name: concatenate1
- from:
name: module-temperature/map
to:
name: module-temperature/filter
- from:
name: module-temperature/filter
to:
name: module-temperature/accumulate
- from:
name: module-temperature/accumulate
to:
name: concatenate1
- from:
name: concatenate1
to:
name: module-collection/accumulate
- from:
name: module-collection/accumulate
to:
name: module-enrichment/map
- from:
name: module-enrichment/map
to:
name: sink
Podrobné pokyny k nasazení a pokyny k testování pro tento příklad najdete v příkladu 2: Nasazení složitého grafu.
Jak funguje složitý graf
Složitý graf zpracovává tři datové proudy a kombinuje je do rozšířené analýzy senzorů:
Jak je znázorněno v diagramu, data proudí z jednoho zdroje do několika fází zpracování:
- Modul okna: Zpoždění příchozích dat pro zpracování na základě času
- Operace větve: Směruje data na základě typu obsahu (data snímačů vs. snímky)
-
Cesta zpracování teploty:
- Převede Fahrenheita na Stupně Celsia.
- Filtry neplatných čtení
- Vypočítá statistické souhrny v časových oknech.
-
Cesta zpracování vlhkosti:
- Shromažďuje měření vlhkosti pomocí statistické analýzy.
-
Cesta ke zpracování obrázků:
- Formátuje obrazová data pro zpracování.
- Provádí detekci objektů na snímcích fotoaparátu.
-
Konečná agregace:
- Zřetězí všechny zpracovávané datové proudy.
- Agreguje výsledky s více senzory.
- Přidá upozornění na metadata a přetěžky.
Graf používá specializované moduly z příkladů Rustu:
- Modul okna pro zpoždění zpracování na základě času
- Moduly teploty pro převod, filtrování a statistickou analýzu
- Modul vlhkosti pro zpracování dat v prostředí
- Moduly snímků pro směrování dat obrázků a detekci objektů
- Formátovací modul pro přípravu obrázků ke zpracování
- Modul shromažďování pro agregaci dat s více senzory
- Modul rozšiřování pro přidání metadat a generování upozornění
Operace větví umožňují paralelní zpracování různých vstupů snímačů, což grafu umožňuje efektivně zpracovávat více datových typů v rámci jednoho pracovního postupu.
Jak se z definic grafu stanou toky dat
Tady je postup, jak souvisí definice grafů a grafy toku dat Azure IoT Operations:
Váš soubor YAML definuje logiku interního zpracování s operacemi zdroje nebo jímky jako abstraktní koncové body. To se stane artefaktem definice grafu. Odkazované moduly implementují skutečné operátory zpracování jako moduly WASM. Definice grafů i moduly WASM se nahrají do registru kontejneru (například Azure Container Registry) jako artefakty OCI pro úložiště registru.
Prostředek Azure Resource Manageru nebo Kubernetes "zabalí" definici grafu a připojí ji ke skutečným koncovým bodům jako prostředek grafu toku dat. Během nasazování za běhu modul toku dat načítá artefakty z registru a nasadí je. V případě mapování koncových bodů se abstraktní operace zdroje a jímky v grafu připojují ke skutečným tématům MQTT, službě Azure Event Hubs nebo jiným zdrojům dat.
Tento diagram například znázorňuje vztah mezi definicemi grafu, moduly WASM a grafy toku dat:
Nasazení registru
Definice grafů i moduly WASM se musí nahrát do registru kontejneru jako artefakty OCI (Open Container Initiative), aby na ně grafy toku dat odkazovaly:
- Definice grafu jsou zabalené jako artefakty OCI s typem média.
application/vnd.oci.image.config.v1+json - Moduly WASM jsou zabalené jako artefakty OCI obsahující zkompilovaný binární soubor WebAssembly.
- Použití sémantické správy verzí (například
my-graph:1.0.0)temperature-converter:2.1.0pro správnou správu závislostí - Podpora registru je kompatibilní se službou Azure Container Registry, Docker Hubem a dalšími registry kompatibilními s OCI.
Oddělení umožňuje opakovaně použitelnou logiku, ve které se stejná definice grafu nasazuje s různými koncovými body. Poskytuje nezávislost prostředí, kde vývoj, příprava a produkce používají různé zdroje dat. Podporuje také modulární nasazení, kde aktualizujete konfigurace koncových bodů beze změny logiky zpracování.
Podrobné pokyny k nahrání definic grafů a modulů WASM do registrů najdete v tématu Použití WebAssembly s grafy toku dat. Kompletní pracovní postupy nasazení, včetně nastavení registru, ověřování a testování, najdete v příkladech v této příručce.
Parametry konfigurace modulu
Definice grafu můžou specifikovat parametry modulu pro operátory WASM prostřednictvím konfigurací modulů:
moduleConfigurations:
- name: my-operator/map
parameters:
threshold:
name: temperature_threshold
description: "Temperature threshold for filtering"
required: true
unit:
name: output_unit
description: "Output temperature unit"
required: false
Tyto parametry se předávají funkci operátora init WASM za běhu a umožňují dynamickou konfiguraci bez opětovného sestavení modulů. Podrobné příklady přístupu k těmto parametrům v kódu Rust a Python najdete v tématu Parametry konfigurace modulu.
Úplný příklad implementace najdete v modulu větve, který ukazuje použití parametrů pro logiku podmíněného směrování.
Další kroky
- Vývoj modulů WebAssembly pro grafy toku dat
- Použití WebAssembly s grafy toku dat
- Konfigurace koncových bodů toku dat