Udostępnij przez


Wdrażanie modułów WebAssembly (WASM) i definicji grafu

Wykresy przepływu danych operacji usługi Azure IoT obsługują moduły WebAssembly (WASM) na potrzeby niestandardowego przetwarzania danych na urządzeniach brzegowych. Możesz wdrożyć niestandardową logikę biznesową i przekształcenia danych w ramach potoków przepływu danych.

Ważne

Wykresy przepływu danych obsługują obecnie tylko punkty końcowe MQTT, Kafka i OpenTelemetry. Inne typy punktów końcowych, takie jak Data Lake, Microsoft Fabric OneLake, Azure Data Explorer i Local Storage, nie są obsługiwane. Aby uzyskać więcej informacji, zobacz Znane problemy.

Ważne

Obecnie jedynym łącznikiem obsługującym definicje grafu na potrzeby przetwarzania niestandardowego jest łącznik HTTP/REST.

Wymagania wstępne

Przegląd

Moduły WASM w grafach przepływu danych i łącznikach operacji Azure IoT umożliwiają przetwarzanie danych na urządzeniach brzegowych przy wysokiej wydajności i bezpieczeństwie. Program WASM działa w środowisku w trybie piaskownicy i obsługuje język Rust i Python.

Konfigurowanie rejestru kontenerów

Operacje usługi Azure IoT wymagają rejestru kontenerów w celu ściągnięcia modułów WASM i definicji grafu. Możesz użyć usługi Azure Container Registry (ACR) lub innego rejestru zgodnego z protokołem OCI.

Aby utworzyć i skonfigurować usługę Azure Container Registry, zobacz Wdrażanie usługi Azure Container Registry.

Instalowanie interfejsu wiersza polecenia USŁUGI ORAS

Użyj interfejsu wiersza polecenia ORAS, aby wypchnąć moduły WASM i definicje grafu do rejestru kontenerów. Aby uzyskać instrukcje dotyczące instalacji, zobacz Instalowanie usługi ORAS.

Ściąganie przykładowych modułów z rejestru publicznego

Użyj wstępnie utworzonych przykładowych modułów:

# Pull sample modules and graphs
oras pull ghcr.io/azure-samples/explore-iot-operations/graph-simple:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/graph-complex:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/temperature:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/window:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/snapshot:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/format:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/humidity:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/collection:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/enrichment:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/filter:1.0.0

Wypychanie modułów do rejestru

Po utworzeniu przykładowych modułów i grafów, prześlij je do rejestru kontenerów. Zastąp <YOUR_ACR_NAME> nazwą Twojego Azure Container Registry. Aby upewnić się, że wykresy i moduły są widoczne w interfejsie użytkownika operacji w sieci Web, dodaj flagi --config i --artifact-type, jak pokazano w poniższym przykładzie.

# Log in to your ACR
az acr login --name <YOUR_ACR_NAME>

# Push modules to your registry
oras push <YOUR_ACR_NAME>.azurecr.io/graph-simple:1.0.0 --config /dev/null:application/vnd.microsoft.aio.graph.v1+yaml graph-simple.yaml:application/yaml --disable-path-validation
oras push <YOUR_ACR_NAME>.azurecr.io/graph-complex:1.0.0 --config /dev/null:application/vnd.microsoft.aio.graph.v1+yaml graph-complex.yaml:application/yaml --disable-path-validation
oras push <YOUR_ACR_NAME>.azurecr.io/temperature:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm temperature-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/window:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm window-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/snapshot:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm snapshot-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/format:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm format-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/humidity:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm humidity-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/collection:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm collection-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/enrichment:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm enrichment-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/filter:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm filter-1.0.0.wasm:application/wasm

Wskazówka

Możesz również wypchnąć własne moduły i utworzyć wykresy niestandardowe. Zobacz Konfiguracja niestandardowych wykresów przepływu danych.

Aktualizowanie modułu w uruchomionym grafie

Moduł WASM można zaktualizować w uruchomionym grafie bez zatrzymywania grafu. Jest to przydatne, gdy chcesz zaktualizować logikę operatora bez zatrzymywania przepływu danych. Na przykład, aby zaktualizować moduł konwersji temperatury z wersji 1.0.0 na 2.0.0, przekaż nową wersję w następujący sposób:

oras push <YOUR_ACR_NAME>.azurecr.io/temperature:2.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm temperature-2.0.0.wasm:application/wasm

Wykres przepływu danych automatycznie pobiera nową wersję modułu bez dodatkowej konfiguracji. Graf nadal działa bez przerwy, a nowa wersja modułu jest używana do późniejszego przetwarzania danych.

Opracowywanie niestandardowych modułów WASM

Aby utworzyć niestandardową logikę przetwarzania danych dla grafów przepływu danych, utwórz moduły WebAssembly w języku Rust lub Python. Moduły niestandardowe umożliwiają implementowanie wyspecjalizowanej logiki biznesowej, przekształceń danych i analiz, które nie są dostępne w wbudowanych operatorach.

Aby uzyskać kompleksowe wskazówki dotyczące programowania, w tym:

  • Konfigurowanie środowiska projektowego
  • Tworzenie operatorów w języku Rust i Python
  • Omówienie modelu danych i interfejsów
  • Kompilowanie i testowanie modułów

Zobacz Develop WebAssembly modules for data flow graphs (Tworzenie modułów zestawu WebAssembly dla wykresów przepływu danych).

Aby uzyskać szczegółowe informacje na temat tworzenia i konfigurowania definicji grafu YAML definiujących przepływy pracy przetwarzania danych, zobacz Konfigurowanie definicji grafu zestawu WebAssembly.