Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Modüllerinizin veri akışlarına ve bağlayıcılara nasıl bağlandığını tanımladığından graf tanımları WASM geliştirmenin merkezinde yer alır. Graf tanımları ile veri akışı grafikleri veya bağlayıcıları arasındaki ilişkiyi anlamak, etkili bir şekilde geliştirmenize yardımcı olur.
Önkoşullar
- Özel WASM modülleri geliştirme hakkında bilgi
- YAML söz dizimini temel olarak anlama
Bu makale YAML graf tanımlarını oluşturmaya ve yapılandırmaya odaklanır. Veri akışı grafiklerini dağıtma ve test etme hakkında bilgi için bkz. WebAssembly (WASM) modüllerini ve graf tanımlarını dağıtma.
Önemli
Veri akışı grafikleri şu anda yalnızca MQTT, Kafka ve OpenTelemetry uç noktalarını desteklemektedir. Veri Gölü, Microsoft Fabric OneLake, Azure Veri Gezgini ve Yerel Depolama gibi diğer uç nokta türleri desteklenmez. Daha fazla bilgi için bkz. Bilinen sorunlar.
Önemli
Şu anda özel işleme için grafik tanımlarını destekleyen tek bağlayıcı HTTP/REST bağlayıcıdır.
Graf tanımı yapısı
Graf tanımları, graf YAML yapısını doğrulayan ve uyumluluğu sağlayan resmi bir JSON şemasını izler. Yapılandırma şunları içerir:
- API ve ana bilgisayar kitaplığı sürüm uyumluluğu için modül gereksinimleri
- Çalışma zamanı parametreleri ve işleç özelleştirmesi için modül yapılandırmaları
- İş akışınızda işleme düğümlerini tanımlayan işlemler
- İşlemler arasında veri akışı yönlendirmesi belirten bağlantılar
Önemli
Graf $schema meta verilerindeki alan, schemastore.org üzerinde barındırılan grafik tanımı şemasına başvurur. Bu şema, graf YAML dosyanızın yapısını doğrular (işlemler, bağlantılar, modül gereksinimleri). Bu bir ileti yükü şeması değildir.
İleti yüklerini doğrulamanız gerekiyorsa WASM modüllerinizin bu doğrulama mantığını kendileri işlemesi gerekir. Yük şemalarını Azure IoT İşlemleri şema kayıt defterine yükleyebilir düğüm bağlantılarında bunlara başvurabilirsiniz, ancak veri akışı çalışma zamanı yük doğrulamayı otomatik olarak zorlamaz. Şema başvurusu, şemayı yalnızca modül kodunuz için kullanılabilir hale getirir.
Temel grafik yapısı
metadata:
$schema: "https://www.schemastore.org/aio-wasm-graph-config-1.0.0.json"
name: "Simple graph"
description: "A simple graph with a source, a map module, and a sink"
version: "1.0.0"
vendor: "Microsoft"
moduleRequirements:
apiVersion: "1.1.0"
runtimeVersion: "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" }
Sürüm uyumluluğu
bölümü moduleRequirements , anlamsal sürüm oluşturma kullanılarak uyumluluğu sağlar:
moduleRequirements:
apiVersion: "1.1.0" # WASI API version for interface compatibility
runtimeVersion: "1.1.0" # Runtime version providing runtime support
features: # Optional features required by modules
- name: "wasi-nn"
Tavsiye
Özellik ile bant içi ONNX çıkarımını wasi-nn etkinleştirme yönergeleri için bkz. WebAssembly veri akışı grafiklerinde ONNX çıkarımı çalıştırma.
Örnek 1: Basit graf tanımı
simple graf tanımı sıcaklık verilerini Fahrenheit'ten Santigrat'a dönüştüren temel bir üç aşamalı işlem hattı gösterir:
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: "azure-samples/explore-iot-operations/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"
Adım adım dağıtım yönergeleri için bkz. WebAssembly (WASM) modüllerini ve graf tanımlarını dağıtma. Bu örneği kullanan bir veri akışını denemek için bkz. Örnek 1: Bir WASM modülüyle temel dağıtım.
Basit graf nasıl çalışır?
Bu grafik basit bir veri işleme işlem hattı oluşturur:
- Kaynak işlemi: Veri akışının kaynak uç noktasından sıcaklık verilerini alır
-
Eşleme işlemi: Verileri sıcaklık WASM modülüyle işler. Düz bir kayıt defteri düzeni için
temperature:1.0.0kullanın veya iç içe bir düzen için depo yolunu ekleyin; örneğinazure-samples/explore-iot-operations/temperature:1.0.0. - Sink işlemi: Dönüştürülen verileri veri akışının hedef uç noktasına gönderir
temperature modülü standart (F - 32) × 5/9 = C formülünü kullanarak Fahrenheit'i Santigrat'a dönüştürür.
Giriş biçimi:
{"temperature": {"value": 100.0, "unit": "F"}}
Çıkış biçimi:
{"temperature": {"value": 37.8, "unit": "C"}}
Örnek 2: Karmaşık graf tanımı
complex graf tanımı gelişmiş analizle sıcaklık, nem ve görüntü verilerini işleyen gelişmiş bir çok sensörlü işleme iş akışını gösterir:
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
- name: module-temperature/filter
parameters:
temperature_lower_bound:
name: temperature_lower_bound
description: "Minimum valid temperature in Celsius (default: -40)"
temperature_upper_bound:
name: temperature_upper_bound
description: "Maximum valid temperature in Celsius (default: 3422)"
operations:
- operationType: "source"
name: "source"
- operationType: delay
name: module-window/delay
module: "azure-samples/explore-iot-operations/window:1.0.0"
- operationType: "map"
name: "module-format/map"
module: "azure-samples/explore-iot-operations/format:1.0.0"
- operationType: map
name: module-snapshot/map
module: "azure-samples/explore-iot-operations/snapshot:1.0.0"
- operationType: branch
name: module-snapshot/branch
module: "azure-samples/explore-iot-operations/snapshot:1.0.0"
- operationType: accumulate
name: module-snapshot/accumulate
module: "azure-samples/explore-iot-operations/snapshot:1.0.0"
- operationType: map
name: module-temperature/map
module: "azure-samples/explore-iot-operations/temperature:1.0.0"
- operationType: branch
name: module-temperature/branch
module: "azure-samples/explore-iot-operations/temperature:1.0.0"
- operationType: filter
name: module-temperature/filter
module: "azure-samples/explore-iot-operations/temperature:1.0.0"
- operationType: accumulate
name: module-temperature/accumulate
module: "azure-samples/explore-iot-operations/temperature:1.0.0"
- operationType: accumulate
name: module-humidity/accumulate
module: "azure-samples/explore-iot-operations/humidity:1.0.0"
- operationType: concatenate
name: concatenate1
module:
- operationType: accumulate
name: module-collection/accumulate
module: "azure-samples/explore-iot-operations/collection:1.0.0"
- operationType: map
name: module-enrichment/map
module: "azure-samples/explore-iot-operations/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
Adım adım dağıtım yönergeleri için bkz. WebAssembly (WASM) modüllerini ve graf tanımlarını dağıtma. Bu örneği kullanan bir veri akışını denemek için bkz . Örnek 2: Karmaşık graf dağıtma.
Karmaşık graf nasıl çalışır?
Karmaşık grafik üç veri akışını işler ve bunları zenginleştirilmiş sensör analizinde birleştirir:
Diyagramda gösterildiği gibi, veri tek bir kaynaktan birden çok işlem aşaması aracılığıyla akar:
- Pencere modülü: Zaman tabanlı işleme için gelen verileri geciktirme
- Dal işlemi: Verileri içerik türüne göre yönlendirir (algılayıcı verileri veya anlık görüntüler)
-
Sıcaklık işleme yolu:
- Fahrenheit'i Santigrat'a dönüştürür
- Geçersiz okumaları filtreler
- Zaman pencereleri içindeki istatistiksel özetleri hesaplar
-
Nem işleme yolu:
- İstatistiksel analiz ile nem ölçümlerini biriktirir
-
Görüntü işleme yolu:
- görüntü verilerini işlenmek üzere biçimlendir
- Kamera anlık görüntülerinde nesne algılama gerçekleştirir
-
Son toplama:
- İşlenen tüm veri akışlarını birleştirir
- Çok sensörlü sonuçları toplar
- Meta veriler ve aşırıperatür uyarıları ekler
Graf, Rust örneklerinden özel modüller kullanır:
- Zamana bağlı işleme gecikmeleri için pencere modülü
- Dönüştürme, filtreleme ve istatistiksel analiz için sıcaklık modülleri
- Çevresel veri işleme için nem modülü
- Görüntü verileri yönlendirme ve nesne algılama için anlık görüntü modülleri
- İşleme için görüntü hazırlığı için biçim modülü
- Çok sensörlü veri toplama için toplama modülü
- Meta veri ekleme ve uyarı oluşturma için zenginleştirme modülü
Dal işlemleri farklı algılayıcı girişlerinin paralel işlenmesini sağlayarak grafın tek bir iş akışı içinde birden çok veri türünü verimli bir şekilde işlemesini sağlar.
Graf tanımları veri akışlarına nasıl dönüşür?
Graf tanımları ve Azure IoT İşlemleri veri akışı graflarının ilişkisi şöyledir:
YAML dosyanız, kaynak/havuz işlemleriyle iç işleme mantığını soyut uç noktalar olarak tanımlar. Bu, grafik tanımı nesnesi olur. Başvuruda bulunan modüller, gerçek işleme işleçlerini WASM modülleri olarak uygular. Hem grafik tanımları hem de WASM modülleri, kayıt defteri depolaması için OCI yapıtları olarak kapsayıcı kayıt defterine (Azure Container Registry gibi) yüklenir.
Azure Resource Manager veya Kubernetes kaynağı, grafik tanımını "sarar" ve veri akışı grafik kaynağı olarak gerçek uç noktalara bağlar. Çalışma zamanı dağıtımı sırasında veri akışı altyapısı yapıtları kayıt defterinden çeker ve dağıtır. Uç nokta eşlemesi için, grafiğinizdeki soyut kaynak/havuz işlemleriniz gerçek MQTT başlıklarına, Azure Event Hubs'a veya diğer veri kaynaklarına bağlanır.
Örneğin, bu diyagram graf tanımları, WASM modülleri ve veri akışı grafikleri arasındaki ilişkiyi gösterir:
Veri akışı graflarını yapılandırma hakkında daha fazla bilgi edinmek için bkz. Veri akışı graflarıyla WebAssembly kullanma.
Kayıt Defteri Dağıtımı
Veri akışı grafiklerinin bunlara başvurabilmesi için önce hem grafik tanımlarının hem de WASM modüllerinin Open Container Initiative (OCI) yapıtları olarak kapsayıcı kayıt defterine yüklenmesi gerekir:
- Graf tanımları, medya türüne sahip OCI yapıtları olarak paketlenir
application/vnd.oci.image.config.v1+json - WASM modülleri, derlenmiş WebAssembly ikili dosyasını içeren OCI yapıtları olarak paketlenir
- Düzgün bağımlılık yönetimi için anlamsal sürüm oluşturma (, gibi
my-graph:1.0.0temperature-converter:2.1.0) kullanma - Kayıt defteri desteği Azure Container Registry, Docker Hub ve diğer OCI uyumlu kayıt defterleriyle uyumludur
Ayrım, aynı graf tanımının farklı uç noktalarla dağıtıldığı yeniden kullanılabilir mantığı etkinleştirir. Geliştirme, hazırlama ve üretimin farklı veri kaynaklarını kullandığı ortam bağımsızlığı sağlar. Ayrıca işlem mantığını değiştirmeden uç nokta yapılandırmalarını güncelleştirdiğiniz modüler dağıtımı da destekler.
Graf tanımlarını ve WASM modüllerini kayıt defterlerine yükleme hakkında ayrıntılı yönergeler için bkz. WebAssembly (WASM) modüllerini ve graf tanımlarını dağıtma.
Modül yapılandırma parametreleri
Graf tanımları, modül yapılandırmaları aracılığıyla WASM işleçleri için çalışma zamanı parametrelerini belirtebilir. Bu parametreler çalışma zamanında operatörünüzün init işlevine geçirilir ve modülleri yeniden derlemeden dinamik yapılandırmayı etkinleştirir.
Önemli
WASM işleci yapılandırma parametreleri gerektiriyorsa ve bunları içinde moduleConfigurationssağlamazsanız, işleç çalışma zamanında başarısız olabilir. Gerekli parametreler için her zaman operatörün belgelerine veya kaynak koduna bakın.
Aşağıdaki örnek, karmaşık grafikte kullanılan sıcaklık örneklemesi için modül yapılandırmalarını göstermektedir.
moduleConfigurations:
- name: module-temperature/map
parameters:
key1:
name: key1
description: "Example parameter passed to the map operator's init function"
- name: module-temperature/filter
parameters:
temperature_lower_bound:
name: temperature_lower_bound
description: "Minimum valid temperature in Celsius (default: -40)"
temperature_upper_bound:
name: temperature_upper_bound
description: "Maximum valid temperature in Celsius (default: 3422)"
name Her yapılandırma girdisindeki alan, grafın operations bölümünde tanımlanan işleç adıyla eşleşmelidir.
parameters altındaki her parametre, operatörünüzün configuration.properties işlevinin aldığı init listesinde bir anahtar-değer çiftine dönüşür.
Rust ve Python kodunuzda bu parametrelere erişme ve bunları kullanma hakkında ayrıntılı örnekler için bkz. Module yapılandırma parametreleri.
Tam bir uygulama örneği için, koşullu yönlendirme mantığı için parametre kullanımını gösteren branch modülü bakın.
Sonraki Adımlar
- Veri akışı grafikleri için WebAssembly modülleri geliştirme
- Veri akışı graflarıyla WebAssembly kullanma
< kayıt defteri uç noktalarını yapılandırın Şema doğrulama ve WIT oluşturma ile veri akışı grafiği örnekleri GitHub