Veri akışı grafiklerinde WASM dönüşümlerini kullanma

Azure IoT İşlemleri data akış grafikleri eşleme, filtreleme ve toplama gibi yaygın işleme görevleri için yerleşik dönüşümler içerir. Yerleşik dönüşümlerin sağladığının ötesinde özel mantığa ihtiyacınız olduğunda, WebAssembly (WASM) modüllerini veri akışı grafı işlem hatlarınızda özel dönüşümler olarak dağıtabilirsiniz.

Tip

Çoğu veri işleme senaryosu için yerleşik dönüşümlerle başlayın. Özel iş mantığına, özelleştirilmiş algoritmalara veya yerleşik seçeneklerin kapsamadığını işlemeye ihtiyacınız olduğunda WASM dönüşümlerini kullanın.

Tip

Yapay zekayı bant içinde çalıştırmak mı istiyorsunuz? WASM işleçlerinizde küçük ONNX modellerini paketlemek ve yürütmek için bkz. WebAssembly veri akışı grafiklerinde ONNX çıkarımını çalıştırma .

Ö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.

Önkoşullar

Uyarı

Veri akışları ve veri akışı grafikleri: Veri akışı , yerleşik dönüştürmeleri kullanarak verileri uç noktalar arasında taşıyan ve dönüştüren bir işlem hattıdır. Veri akışı grafiği, veri akışlarını birleştirilebilir işleme adımlarıyla genişletir. Azure IoT İşlemleri eşleme, filtreleme, dallanma ve toplama gibi yaygın işlemler için built-in veri akışı grafikleri sağlar. Özel işleme mantığı için, bu makalede açıklandığı gibi WebAssembly modüllerini uygulayabilirsiniz. Veri akışı grafikleri, işleçlerin nasıl bağlanacağını belirten YAML graf tanımlarını kullanır. Veri akışı grafı kaynağı bu tanımı sarmalar ve soyut kaynak ve havuz işlemlerini MQTT konuları ve Kafka konuları gibi somut uç noktalara eşler.

Genel Bakış

Azure IoT İşlemleri veri akışı grafiklerinde WebAssembly (WASM) modüllerini kullanarak verileri uçta yüksek performans ve güvenlikle işleyebilirsiniz. WASM korumalı bir ortamda çalışır ve Rust ile Python destekler.

WASM veri akışı grafikleri nasıl çalışır?

WASM veri akışı uygulaması şu iş akışını izler:

  1. WASM modülleri geliştirme: Desteklenen bir dilde özel işleme mantığı yazın ve WebAssembly Bileşen Modeli biçiminde derleyin. Daha fazla bilgi edinmek için bkz. Veri akışları için WASM modülleri oluşturma
  2. Graf tanımı geliştirme: YAML yapılandırma dosyalarını kullanarak verilerin modüller arasında nasıl hareket ettigini tanımlayın. Daha fazla bilgi için bkz. WebAssembly graf tanımlarını yapılandırma.
  3. Yapıtları kayıt defterinde depolama: ORAS gibi OCI uyumlu araçları kullanarak derlenmiş WASM modüllerini ve graf tanımlarını kapsayıcı kayıt defterine gönderin. Daha fazla bilgi edinmek için bkz. WebAssembly (WASM) modüllerini ve graf tanımlarını dağıtma.
  4. Kayıt defteri uç noktalarını yapılandırın: Azure IoT İşlemleri kapsayıcı kayıt defterine erişebilmesi için kimlik doğrulamasını ve bağlantı ayrıntılarını ayarlayın. Daha fazla bilgi edinmek için bkz. Kayıt defteri uç noktalarını yapılandırma.
  5. Veri akışı grafı oluştur: Grafik tanımı kullanan bir veri akışı tanımlamak için işlem deneyimi web kullanıcı arabirimini veya Bicep dosyalarını kullanın.
  6. Dağıtım ve Çalıştırma: Azure IoT İşlemleri, graf tanımlarını ve WASM modüllerini kapsayıcı kayıt defterinden alır ve çalıştırır.

Aşağıdaki örneklerde WASM veri akışı grafiklerinin yaygın senaryolar için nasıl yapılandırıldığı gösterilmektedir. Örneklerde hızlı bir şekilde kullanmaya başlayabilmeniz için sabit kodlanmış değerler ve basitleştirilmiş yapılandırmalar kullanılır.

Örnek 1: Tek bir WASM modülüyle temel dağıtım

Bu örnek, WASM modülü kullanarak sıcaklık verilerini Fahrenheit'ten Santigrat'a dönüştürür. temperature modülü kaynak kodu GitHub üzerinde kullanılabilir. WebAssembly (WASM) modüllerini ve graf tanımlarını dağıtma konusunda örnek adımları izlediyseniz, graph-simple:1.0.0 grafik tanımı ve önceden derlenmiş temperature:1.0.0 modül zaten kapsayıcı kayıt defterinizdedir. Örnek grafik yapıtı yolu azure-samples/explore-iot-operations/graph-simple:1.0.0 şeklindedir. Genel GHCR örnekleri için veya örnek yapıtları aynı depo yolunu kullanarak kendi kayıt defterinize kopyalarken bu yolu kullanın.

Nasıl çalışır?

graph tanımı basit, üç aşamalı bir işlem hattı oluşturur:

  1. Kaynak: MQTT'den sıcaklık verilerini alır
  2. Harita: Sıcaklık WASM modülüyle verileri işler
  3. Veri Alıcısı: Dönüştürülen verileri MQTT'ye geri gönderir

Basit graf tanımının nasıl çalıştığı ve yapısı hakkında daha fazla bilgi için bkz . Örnek 1: Basit grafik tanımı.

Giriş biçimi:

{"temperature": {"value": 100.0, "unit": "F"}}

Çıkış biçimi:

{"temperature": {"value": 37.8, "unit": "C"}}

Aşağıdaki yapılandırma, bu sıcaklık dönüştürme işlem hattını kullanan bir veri akışı grafiği oluşturur. Veri akışı grafiği YAML graf tanımına graph-simple:1.0.0 başvurur ve kapsayıcı kayıt defterinizden sıcaklık modülünü çeker. Azure örnek grafı azure-samples/explore-iot-operations depo yolu altında depolanır, bu nedenle bu yolu artifact değerine ekleyin.

Veri akışı grafiğini yapılandırma

Bu yapılandırma, sıcaklık dönüştürme iş akışını uygulayan üç düğümü tanımlar: gelen sıcaklık verilerine abone olan bir kaynak düğüm, WASM modülünü çalıştıran bir grafik işleme düğümü ve dönüştürülen sonuçları yayımlayan bir hedef düğüm.

Veri akışı grafı kaynağı, grafik tanım nesnesini barındırır ve soyut kaynak ile sink işlemlerini kesin uç noktalara bağlar.

  • Graf tanımının source işlemi veri akışının kaynak düğümüne bağlanır (MQTT konusu)
  • Graf tanımının sink işlemi veri akışının hedef düğümüne bağlanır (MQTT konusu)
  • Graf tanımının işleme işlemleri graf işleme düğümü içinde çalıştırılır

Bu ayrım, aynı graf tanımını farklı uç noktalarla ortamlar arasında dağıtmanıza olanak tanırken işleme mantığını değiştirmeden tutmanızı sağlar.

  1. İşlem deneyiminde veri akışı grafiği oluşturmak için Veri akışı sekmesine gidin.

  2. + Oluştur'un yanındaki açılan menüyü ve ardından Veri akışı grafı oluştur'u seçin.

    Veri akışı grafının nasıl oluşturulacağını gösteren işlem deneyimi arabiriminin ekran görüntüsü.

  3. Veri akışı özelliklerini ayarlamak için new-data-flow yer tutucu adını seçin. Veri akışı grafiğinin adını girin ve kullanılacak veri akışı profilini seçin.

  4. Kaynak düğümü yapılandırmak için veri akışı diyagramında Kaynak'ı seçin. Kaynak ayrıntıları'nın altında Varlık veya Veri akışı Uç Noktası'yı seçin.

    Veri akışı grafı için kaynak seçmeyi gösteren işlem deneyimi arabiriminin ekran görüntüsü.

    1. Varlık'ı seçerseniz, verilerin çekileceği varlığı seçin ve Uygula'yı seçin.

    2. Veri akışı Uç Noktası'nı seçerseniz aşağıdaki ayrıntıları girin ve Uygula'yı seçin.

      Setting Description
      Veri akışı uç noktası Varsayılan MQTT ileti aracısı uç noktasını kullanmak için varsayılan'ı seçin.
      Konu Gelen iletiler için abone olunacak konu filtreleme mekanizması. Birden çok konu başlığı eklemek için Konu Başlıkları
      İleti şeması Gelen iletileri seri durumdan çıkarmak için kullanılacak şema.
  5. Grafik işleme düğümü eklemek için veri akışı diyagramında Graf dönüşümü ekle (isteğe bağlı) öğesini seçin. Grafik seçimi bölmesinde graph-simple:1 öğesini ve ardından Uygula'yı seçin.

    Basit bir veri akışı grafının nasıl oluşturulacağını gösteren işlem deneyimi arabiriminin ekran görüntüsü.

  6. Diyagramda grafik düğümünü seçerek bazı graf işleci ayarlarını yapılandırabilirsiniz. Örneğin modül-sıcaklık/harita işlecini seçip değerini key2girebilirsinizexample-value-2. Değişiklikleri kaydetmek için Uygula'yı seçin.

    Basit bir veri akışı grafiğini yapılandırmayı gösteren işlem deneyimi arabiriminin ekran görüntüsü.

  7. Veri akışı diyagramında Hedef'i seçerek hedef düğümü yapılandırın.

  8. Veri akışı grafını kaydetmek için veri akışı grafı adının altında Kaydet'i seçin.

Uyarı

Artefakt referansı, kayıt defteri uç noktasının ana bilgisayarına görelidir. Genel kullanıma açık GHCR örnekleri için kayıt defteri uç noktasının ana bilgisayarı ghcr.io olduğundan, azure-samples/explore-iot-operations/graph-simple:1.0.0 kullanın. Örnek artefaktları aynı depo yolu altında kendi registry'nize kopyaladıysanız aynı artefakt yolunu kullanın. Kendi düz özel kayıt defteri düzeniniz için graph-simple:1.0.0 gibi düz bir artefakt başvurusu kullanın.

Veri akışını test edin

Veri akışını test etmek için küme içinden MQTT iletileri gönderin. Sıcaklık modülü, (sayısal) ve temperature (dize) alanları içeren value iç içe unit nesne içeren belirli bir JSON biçiminde iletiler bekler. Örneğin: {"temperature":{"value":72,"unit":"F"}}.

İlk olarak, MQTT istemcileriyle MQTT aracısına bağlantıyı test etme bölümündeki yönergeleri izleyerek MQTT istemci podunu dağıtın. MQTT istemcisi, aracıya bağlanmak için kimlik doğrulama belirteçlerini ve sertifikaları sağlar. MQTT istemcisini dağıtmak için aşağıdaki komutu çalıştırın:

kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml

Sıcaklık iletileri gönderme

İlk terminal oturumunda, Fahrenheit'te sıcaklık verilerini göndermek için bir betik oluşturun ve çalıştırın:

# Connect to the MQTT client pod
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh -c '
# Create and run temperature.sh from within the MQTT client pod
while true; do
  # Generate a random temperature value between 0 and 6000 Fahrenheit
  random_value=$(shuf -i 0-6000 -n 1)
  payload="{\"temperature\":{\"value\":$random_value,\"unit\":\"F\"}}"

  echo "Publishing temperature: $payload"

  # Publish to the input topic
  mosquitto_pub -h aio-broker -p 18883 \
    -m "$payload" \
    -t "sensor/temperature/raw" \
    -d \
    --cafile /var/run/certs/ca.crt \
    -D PUBLISH user-property __ts $(date +%s)000:0:df \
    -D CONNECT authentication-method 'K8S-SAT' \
    -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)

  sleep 1
done'

Uyarı

MQTT kullanıcı özelliği __ts , Karma Mantıksal Saat (HLC) kullanarak iletilerin zamanında işlenmesini sağlamak için iletilere bir zaman damgası ekler. Zaman damgası, veri akışının iletiyi kabul etmeye veya bırakmaya karar vermesine yardımcı olur. özelliğinin biçimi şeklindedir <timestamp>:<counter>:<nodeid>. Veri akışının işlenmesini daha doğru hale getirir, ancak zorunlu değildir.

Betik, her saniye sensor/temperature/raw konusuna rastgele sıcaklık verileri yayımlar. Şu şekilde görünmelidir:

Publishing temperature: {"temperature":{"value":1234,"unit":"F"}}
Publishing temperature: {"temperature":{"value":5678,"unit":"F"}}

Sıcaklık verilerini yayımlamaya devam etmek için betiği çalışır durumda bırakın.

İşlenen iletilere abone olma

İkinci terminal oturumunda (MQTT istemci pod'una da bağlı), dönüştürülen sıcaklık değerlerini görmek için çıkış konusuna abone olun:

# Connect to the MQTT client pod
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh -c '
mosquitto_sub -h aio-broker -p 18883 -t "sensor/temperature/processed" --cafile /var/run/certs/ca.crt \
-D CONNECT authentication-method "K8S-SAT" \
-D CONNECT authentication-data "$(cat /var/run/secrets/tokens/broker-sat)"'

WASM modülüyle sıcaklık verilerinin Fahrenheit'ten Santigrat'a dönüştürüldüğünü görürsünüz.

{"temperature":{"value":1292.2222222222222,"count":0,"max":0.0,"min":0.0,"average":0.0,"last":0.0,"unit":"C","overtemp":false}}
{"temperature":{"value":203.33333333333334,"count":0,"max":0.0,"min":0.0,"average":0.0,"last":0.0,"unit":"C","overtemp":false}}

Örnek 2: Karmaşık grafiği devreye alma

Bu örnekte sıcaklık, nem ve görüntü verileri gibi birden çok veri türünü işleyen gelişmiş bir veri işleme iş akışı gösterilmektedir. complex graph definition gelişmiş analiz ve nesne algılama gerçekleştirmek için birden çok WASM modülünü düzenler.

Nasıl çalışır?

Karmaşık grafik üç veri akışını işler ve bunları zenginleştirilmiş sensör analizinde birleştirir:

  • Sıcaklık işleme: Fahrenheit'i Santigrat'a dönüştürür, geçersiz okumaları filtreler ve istatistikleri hesaplar
  • Nem işleme: Zaman aralıkları içinde nem ölçümlerini biriktirir
  • Görüntü işleme: Kamera anlık görüntülerinde nesne algılama gerçekleştirir ve sonuçları biçimlendirer

Karmaşık graf tanımının nasıl çalıştığı, yapısı ve birden çok işleme aşamasından geçen veri akışı hakkında daha fazla bilgi için bkz. Örnek 2: Karmaşık graf tanımı.

Graf, Rust işleçleri koleksiyonundan özel modüller kullanır.

Karmaşık veri akışı grafiğini yapılandırma

Bu yapılandırma YAML graf tanımını kullanarak graph-complex:1.0.0 çok sensörlü işleme iş akışını uygular. Örnek grafik nesnesinin yolu azure-samples/explore-iot-operations/graph-complex:1.0.0 şeklindedir. Veri akışı grafı dağıtımının Örnek 1'e nasıl benzer olduğuna dikkat edin; her ikisi de işleme mantığı farklı olsa bile aynı üç düğümlü deseni (kaynak, grafik işlemcisi, hedef) kullanır.

Bu benzerlik, veri akışı grafı kaynağının grafik tanımlarını yükleyen ve yürüten bir konak ortamı olarak davranması nedeniyle oluşur. Gerçek işleme mantığı, WASM modülleri arasındaki işlemlerin ve bağlantıların YAML belirtimini içeren grafik tanımında (graph-simple:1.0.0 veya graph-complex:1.0.0) bulunur. Veri akışı grafı kaynağı, graf tanımını çekmek, modüllerin örneğini görüntülemek ve verileri tanımlı iş akışı üzerinden yönlendirmek için çalışma zamanı altyapısı sağlar.

  1. İşlem deneyiminde veri akışı grafiği oluşturmak için Veri akışı sekmesine gidin.

  2. + Oluştur'un yanındaki açılan menüyü ve ardından Veri akışı grafı oluştur'u seçin.

    Veri akışı karmaşık grafının nasıl oluşturulacağını gösteren işlem deneyimi arabiriminin ekran görüntüsü.

  3. Veri akışı özelliklerini ayarlamak için new-data-flow yer tutucu adını seçin. Veri akışı grafiğinin adını girin ve kullanılacak veri akışı profilini seçin.

  4. Kaynak düğümü yapılandırmak için veri akışı diyagramında Kaynak'ı seçin. Kaynak ayrıntıları'nın altında Varlık veya Veri akışı Uç Noktası'yı seçin.

    Veri akışı grafı için kaynak seçmeyi gösteren işlem deneyimi arabiriminin ekran görüntüsü.

    1. Varlık'ı seçerseniz, verilerin çekileceği varlığı seçin ve Uygula'yı seçin.

    2. Veri akışı Uç Noktası'nı seçerseniz aşağıdaki ayrıntıları girin ve Uygula'yı seçin.

      Setting Description
      Veri akışı uç noktası Varsayılan MQTT ileti aracısı uç noktasını kullanmak için varsayılan'ı seçin.
      Konu Gelen iletiler için abone olunacak konu filtreleme mekanizması. Birden çok konu başlığı eklemek için Konu Başlıkları
      İleti şeması Gelen iletileri seri durumdan çıkarmak için kullanılacak şema.
  5. Grafik işleme düğümü eklemek için veri akışı diyagramında Graf dönüşümü ekle (isteğe bağlı) öğesini seçin. Graf seçimi bölmesinde graph-complex:1 öğesini ve ardından Uygula'yı seçin.

    Karmaşık bir veri akışı grafının nasıl oluşturulacağını gösteren işlem deneyimi arabiriminin ekran görüntüsü.

  6. Diyagramda grafik düğümünü seçerek bazı graf işleci ayarlarını yapılandırabilirsiniz.

    Karmaşık bir veri akışı grafının nasıl yapılandıracağınızı gösteren işlem deneyimi arabiriminin ekran görüntüsü.

    Operator Description
    modül anlık görüntüsü/dal Modülü snapshot görüntülerde nesne algılama gerçekleştirecek şekilde yapılandırır. Görüntü verilerinin snapshot_topic giriş konusunu belirtmek için yapılandırma anahtarını ayarlayabilirsiniz.
    modül sıcaklığı/harita key2 Sıcaklık değerlerini farklı bir ölçeğe dönüştürür.
  7. Değişiklikleri kaydetmek için Uygula'yı seçin.

  8. Veri akışı diyagramında Hedef'i seçerek hedef düğümü yapılandırın.

  9. Veri akışı grafını kaydetmek için veri akışı grafı adının altında Kaydet'i seçin.

Karmaşık veri akışını test edin

Herhangi bir çıktıyı görebilmeniz için önce kaynak verileri ayarlayın.

RAW görüntü dosyalarını mqtt-client pod'a yükleme

Görüntü dosyaları, görüntülerdeki snapshot nesneleri algılamak için modüle yöneliktir. Dosyalar, GitHub images klasöründe bulunur.

İlk olarak, görüntü dosyalarına erişmek için depoyu kopyalayın:

git clone https://github.com/Azure-Samples/explore-iot-operations.git
cd explore-iot-operations

Klasörden ./samples/wasm/images pod'a RAW görüntü dosyalarını yüklemek için aşağıdaki komutu kullanın: mqtt-client

kubectl cp ./samples/wasm/images azure-iot-operations/mqtt-client:/tmp

Dosyaların karşıya yüklendiğini denetleyin:

kubectl exec -it mqtt-client -n azure-iot-operations -- ls /tmp/images

Klasördeki /tmp/images dosyaların listesini görmeniz gerekir.

beaker.raw          laptop.raw          sunny2.raw
binoculars.raw      lawnmower.raw       sunny4.raw
broom.raw           milkcan.raw         thimble.raw
camera.raw          photocopier.raw     tripod.raw
computer_mouse.raw  radiator.raw        typewriter.raw
daisy3.raw          screwdriver.raw     vacuum_cleaner.raw
digital_clock.raw   sewing_machine.raw
hammer.raw          sliding_door.raw

Sanal sıcaklık ve nem verilerini yayımlama ve görüntü gönderme

Sıcaklık ve nem verilerini yayımlamaya ve görüntüleri tek bir betikte göndermeye yönelik komutları birleştirebilirsiniz. Aşağıdaki komutu kullanın:

# Connect to the MQTT client pod and run the script
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh -c '
while true; do 
  # Generate a random temperature value between 0 and 6000
  temp_value=$(shuf -i 0-6000 -n 1)
  temp_payload="{\"temperature\":{\"value\":$temp_value,\"unit\":\"F\"}}"
  echo "Publishing temperature: $temp_payload"
  mosquitto_pub -h aio-broker -p 18883 \
    -m "$temp_payload" \
    -t "sensor/temperature/raw" \
    --cafile /var/run/certs/ca.crt \
    -D CONNECT authentication-method "K8S-SAT" \
    -D CONNECT authentication-data "$(cat /var/run/secrets/tokens/broker-sat)" \
    -D PUBLISH user-property __ts $(date +%s)000:0:df

  # Generate a random humidity value between 30 and 90
  humidity_value=$(shuf -i 30-90 -n 1)
  humidity_payload="{\"humidity\":{\"value\":$humidity_value}}"
  echo "Publishing humidity: $humidity_payload"
  mosquitto_pub -h aio-broker -p 18883 \
    -m "$humidity_payload" \
    -t "sensor/humidity/raw" \
    --cafile /var/run/certs/ca.crt \
    -D CONNECT authentication-method "K8S-SAT" \
    -D CONNECT authentication-data "$(cat /var/run/secrets/tokens/broker-sat)" \
    -D PUBLISH user-property __ts $(date +%s)000:0:df

  # Send an image every 2 seconds
  if [ $(( $(date +%s) % 2 )) -eq 0 ]; then
    file=$(ls /tmp/images/*.raw | shuf -n 1)
    echo "Sending file: $file"
    mosquitto_pub -h aio-broker -p 18883 \
      -f $file \
      -t "sensor/images/raw" \
      --cafile /var/run/certs/ca.crt \
      -D CONNECT authentication-method "K8S-SAT" \
      -D CONNECT authentication-data "$(cat /var/run/secrets/tokens/broker-sat)" \
      -D PUBLISH user-property __ts $(date +%s)000:0:df
  fi

  # Wait for 1 second before the next iteration
  sleep 1
done'

Çıktıyı denetleme

Yeni bir terminal açarak çıkış başlığına abone olun.

kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh -c '
mosquitto_sub -h aio-broker -p 18883 -t "analytics/sensor/processed" --cafile /var/run/certs/ca.crt \
-D CONNECT authentication-method "K8S-SAT" \
-D CONNECT authentication-data "$(cat /var/run/secrets/tokens/broker-sat)"'

Çıktı aşağıdaki örneğe benzer:

{"temperature":[{"count":9,"max":2984.4444444444443,"min":248.33333333333337,"average":1849.6296296296296,"last":2612.222222222222,"unit":"C","overtemp":true}],"humidity":[{"count":10,"max":76.0,"min":30.0,"average":49.7,"last":38.0}],"object":[{"result":"milk can; broom; screwdriver; binoculars, field glasses, opera glasses; toy terrier"}]}
{"temperature":[{"count":10,"max":2490.5555555555557,"min":430.55555555555554,"average":1442.6666666666667,"last":1270.5555555555557,"unit":"C","overtemp":true}],"humidity":[{"count":9,"max":87.0,"min":34.0,"average":57.666666666666664,"last":42.0}],"object":[{"result":"broom; Saint Bernard, St Bernard; radiator"}]}

Burada çıkış, sıcaklık ve nem verilerinin yanı sıra görüntülerde algılanan nesneleri içerir.

Özel veri akışı grafiklerinin yapılandırması

Bu bölümde WASM modülleriyle veri akışı graflarını yapılandırma hakkında ayrıntılı bilgiler sağlanır. Tüm yapılandırma seçeneklerini, veri akışı uç noktalarını ve gelişmiş ayarları kapsar.

Veri akışı grafiğine genel bakış

Veri akışı grafiği, verilerin işlenmek üzere WebAssembly modülleri aracılığıyla nasıl aktığını tanımlar. Her grafik şunlardan oluşur:

  • Grafın etkinleştirilip etkinleştirilmediğini veya devre dışı bırakılıp bırakılmadığını denetleen mod
  • Profil referansı, ölçeklendirme ve kaynak ayarlarını tanımlayan bir veri akışı profiline bağlanır.
  • İsteğe bağlı olarak grafik durumu için kalıcı depolamayı etkinleştiren disk kalıcılığı
  • Kaynak, işleme ve hedef bileşenleri tanımlayan düğümler
  • Verilerin düğümler arasında nasıl akacağını belirten düğüm bağlantıları

Mod yapılandırması

mode özelliği, veri akışı grafiğinin verileri etkin bir şekilde işleyip işlemediğini belirler. Modu Enabled veya Disabled (büyük/küçük harfe duyarlı değil) olarak ayarlayın. Devre dışı bırakıldığında, grafik verileri işlemeyi durdurur ancak yapılandırmasını korur.

Bir veri akışı grafiği oluşturduğunuzda veya düzenlediğinizde, Veri akışı özellikleri bölmesindeki Veri akışını etkinleştir bölümünde Evet'i işaretleyerek modu Etkin olarak ayarlayın. İşaretsiz bırakırsanız, mod Devre Dışı olarak ayarlanır.

Mod yapılandırmasını etkinleştirmeyi veya devre dışı bırakmayı gösteren işlem deneyimi arabiriminin ekran görüntüsü.

Profil referansı

Profil başvurusu, veri akışı grafınızı ölçeklendirme ayarlarını, örnek sayılarını ve kaynak sınırlarını tanımlayan bir veri akışı profiline bağlar. Profil referansı belirtmezseniz, bunun yerine Kubernetes sahip referansı kullanmanız gerekir. Çoğu senaryo, Azure IoT İşlemleri tarafından sağlanan varsayılan profili kullanır.

Bir veri akışı grafiği oluşturduğunuzda veya düzenlediğinizde, Veri akışı özellikleri bölmesinde veri akışı profilini seçin. Varsayılan veri akışı profili varsayılan olarak seçilidir. Veri akışı profilleri hakkında daha fazla bilgi için bkz. Veri akışı profilini yapılandırma.

Önemli

Veri akışı profilini yalnızca bir veri akışı grafı oluştururken seçebilirsiniz. Veri akışı grafiği oluşturulduktan sonra veri akışı profilini değiştiremezsiniz. Mevcut bir veri akışı grafiğinin veri akışı profilini değiştirmek istiyorsanız, özgün veri akışı grafiğini silin ve yeni veri akışı profiliyle yeni bir tane oluşturun.

Disk kalıcılığı isteme

İstek diski kalıcılığı, veri akışı grafiklerinin yeniden başlatmalar arasında durumu korumasına olanak tanır. Bu özelliği etkinleştirdiğinizde, bağlı arayıcı yeniden başlatılırsa grafik işleme durumunu kurtarabilir. Durum bilgisi taşıyan işleme senaryolarında ara verileri kaybetmenin sorunlu olacağı durumlar için bu özellik kullanışlıdır. İstek diski kalıcılığını etkinleştirdiğinizde, aracı abone kuyruğundaki iletiler gibi MQTT verilerini diskte kalıcı hale gelir. Bu yaklaşım, veri akışınızın veri kaynağının güç kesintileri veya aracı yeniden başlatmaları sırasında veri kaybı yaşamamasını sağlar. Veri akışı başına kalıcılık yapılandırıldığından aracı en iyi performansı korur, bu nedenle yalnızca kalıcılık gerektiren veri akışları bu özelliği kullanır.

Veri akışı grafiği, abonelik sırasında MQTTv5 kullanıcı özelliğini kullanarak bu kalıcılık isteğini yapar. Bu özellik yalnızca aşağıdaki durumlarda çalışır:

  • Veri akışı, kaynak olarak MQTT aracısını kullanır (MQTT uç noktası ile kaynak düğüm)
  • MQTT aracısı, abone kuyrukları gibi veri türleri için Enabled olarak ayarlanmış dinamik kalıcılık moduyla kalıcılık özelliğini etkinleştirmiştir.

Bu yapılandırma, veri akışı grafikleri gibi MQTT istemcilerinin MQTTv5 kullanıcı özelliklerini kullanarak abonelikleri için disk kalıcılığı istemesine olanak tanır. Ayrıntılı MQTT aracısı kalıcılık yapılandırması için bkz. MQTT aracısı kalıcılığını yapılandırma.

Enabled veya Disabled ayarını kabul eder, varsayılan olarak Disabled ile.

Bir veri akışı grafiği oluşturduğunuzda veya düzenlediğinizde, Veri akışı özellikleri bölmesinde, İstek diski kalıcılığını Etkin olarak ayarlamak için Veri akışı kalıcılığı iste bölümünde Evet'i işaretleyin. İşaretsiz bırakırsanız ayar Devre Dışı olur.

Adlandırma kuralları ve sınırları

Veri akışı grafı kaynakları ve bileşenleri farklı katmanlarda zorunlu kılınan adlandırma kısıtlamalarına sahiptir:

Bileşen İzin verilen karakterler Uzunluk Notlar
Veri akışı grafı kaynak adı Küçük harf alfanümerik ve tireler (a-z, 0-9, -). Alfasayısal karakterle başlayıp bitmelidir. 3-63 karakter ARM API tarafından uygulanır.
Düğüm adı Alfasayısal karakterler, alt çizgiler ve kısa çizgiler (a-zA-Z0-9, _, -). Belgelenmiş sınır yok Grafik içinde benzersiz olmalıdır.
Yapılandırma anahtarı Alfasayısal karakterler, alt çizgiler ve kısa çizgiler (a-zA-Z0-9, _, -). Belgelenmiş sınır yok WASM modüllerine anahtar-değer çiftleri geçirilir.
Veri akışı profil adı Küçük harfli alfasayısal ve kısa çizgiler. 3-39 karakter 39 karakterlik sınır, Kubernetes pod adı kısıtlamalarından kaynaklanır (63 karakterlik sınırdan aio-dataflow- ön eki ve düzeltme soneki çıkarılır).
Şema referansı aio-sr://<namespace>/<name>:<version> formatı veya aio-sr://<name>:<version> formatıyla eşleşmelidir. Mevcut Değil Düğüm bağlantı şemalarında kullanılır.

Veri akışı grafı aşağıdaki yapısal kuralları da zorunlu kılar:

  • Yinelenen düğüm adı yok: Grafikteki her düğümün benzersiz bir adı olmalıdır.
  • Geçerli bağlantı türleri: Yalnızca aşağıdaki düğüm bağlantı türlerine izin verilir: Kaynak-Graf, Kaynak-Hedef, Graf-Graf ve Graf-Hedef.
  • Döngü yok: Grafik, sonsuz işleme döngüleri oluşturacak döngüsel bağlantılar içeremez.
  • Kendi kendine döngü yok: Bir düğüm kendisine bağlanamaz.
  • Konu çakışması yok: Kaynak ve hedef aynı uç noktayı kullanıyorsa, MQTT konuları çakışamaz ve bu da sonsuz bir ileti döngüsü oluşturur.

Düğüm yapılandırması

Düğümler, veri akışı grafiğinin yapı taşlarıdır. Her düğümün grafik içinde benzersiz bir adı vardır ve belirli bir işlevi gerçekleştirir. Grafik üç düğüm türü içerir:

Kaynak düğümler

Kaynak düğümler, verilerin grafın nereye girileceği tanımlar. MQTT aracılarından veya Kafka konu başlıklarından veri alan veri akışı uç noktalarına bağlanır. Her kaynak düğümü şunları belirtmelidir:

  • Yapılandırılmış bir veri akışı uç noktasına işaret eden uç nokta başvurusu.
  • Abone olunacak MQTT konularının veya Kafka konularının listesi olarak veri kaynakları
  • Şema çıkarımı için bir Azure Cihaz Kayıt Defteri varlığına bağlanan varlık başvurusu (isteğe bağlı)

Veri kaynakları dizisi, uç nokta yapılandırmasını değiştirmeden birden çok konuya abone olmanıza olanak tanır. Bu esneklik, uç noktanın farklı veri akışlarında yeniden kullanılmasını sağlar.

Uyarı

Şu anda veri akışı grafları için veri kaynakları olarak yalnızca MQTT ve Kafka uç noktaları desteklenmektedir. Daha fazla bilgi için bkz . Veri akışı uç noktalarını yapılandırma.

Kaynak düğümü yapılandırmak için veri akışı diyagramında Kaynak'ı seçin. Kaynak ayrıntıları'nın altında Veri akışı Uç Noktası'nı seçin, ardından Konu(lar) alanını kullanarak gelen iletiler için abone olunacak MQTT konu filtrelerini belirtin. Satır ekle'yi seçip yeni bir konu girerek birden çok MQTT konusu ekleyin.

Grafik işleme düğümleri

Graf işleme düğümleri, verileri dönüştüren WebAssembly modüllerini içerir. Bu düğümler, WASM yapıtlarını kapsayıcı kayıt defterlerinden çeker ve bunları belirtilen yapılandırma parametrelerini kullanarak çalıştırır. Her grafik düğümü şunları gerektirir:

  • Yapıtları çekmek için bir kayıt defteri uç noktasına işaret eden kayıt defteri uç noktası başvurusu
  • Çekilecek modül adını ve sürümünü tanımlayan artifact belirtimi
  • WASM modülüne anahtar-değer çiftleri olarak yapılandırma parametreleri geçirildi

Yapılandırma dizisi WASM yapıtını yeniden oluşturmadan modül davranışını özelleştirmenizi sağlar. Yaygın yapılandırma seçenekleri arasında işleme parametreleri, eşikler, dönüştürme ayarları ve özellik bayrakları bulunur.

Grafik işleme düğümü eklemek için veri akışı diyagramında Graf dönüşümü ekle (isteğe bağlı) öğesini seçin. Grafik seçimi bölmesinde, basit veya karmaşık bir grafik olarak istediğiniz grafik yapıtını seçin ve Uygula'yı seçin. Diyagramda grafik düğümünü seçerek bazı graf işleci ayarlarını yapılandırabilirsiniz.

Yapılandırma anahtar-değer çiftlerini çalışma zamanında WASM modülüne geçirirsiniz. Modül, davranışını özelleştirmek için bu değerlere erişebilir. Bu yaklaşım şunları yapmanızı sağlar:

  • Aynı WASM modülünü farklı yapılandırmalarla dağıtın.
  • Modülleri yeniden derlemeden işleme parametrelerini ayarlayın.
  • Dağıtım gereksinimlerine göre özellikleri etkinleştirin veya devre dışı bırakın.
  • Eşikler veya uç noktalar gibi ortama özgü değerler ayarlayın.

Önemli

Gerekli yapılandırma parametreleri için WASM modülünüzün belgelerine veya kaynak koduna bakın. Bir modül belirli parametreleri (filtre sınırları veya eşikler gibi) bekliyorsa ve bunları sağlamazsanız modül çalışma zamanında başarısız olabilir. Grafik tanımlarında parametre tanımlama hakkında ayrıntılı bilgi için bkz . Modül yapılandırma parametreleri.

Hedef düğümler

Hedef düğümler, işlenen verilerin nereye gönderileceğini tanımlar. MQTT aracılarına, bulut depolama alanına veya diğer sistemlere veri gönderen veri akışı uç noktalarına bağlanır. Her hedef düğüm şöyle belirtir:

  • Yapılandırılmış bir veri akışı uç noktasına işaret eden uç nokta başvurusu.
  • Veri hedefi, çıktı verilerinin konulduğu belirli bir konu, yol veya konum olarak tanımlanır.
  • Serileştirme biçimini ve şema doğrulamayı tanımlayan çıkış şeması ayarları (isteğe bağlı).

Azure Data Lake veya Fabric OneLake gibi depolama hedefleri için verilerin nasıl serileştirileceğini ve doğrulanacağını denetlemek için çıkış şeması ayarlarını belirtebilirsiniz.

Uyarı

Şu anda veri akışı grafları için veri hedefleri olarak yalnızca MQTT, Kafka ve OpenTelemetry uç noktaları desteklenmektedir. Daha fazla bilgi için bkz . Veri akışı uç noktalarını yapılandırma.

  1. Veri akışı diyagramında Hedef düğümünü seçin.
  2. Veri akışı uç noktası ayrıntıları açılan listesinden istediğiniz veri akışı uç noktasını seçin.
  3. Hedefi yapılandırmak için Devam Et'i seçin.
  4. Verilerin göndereceği konu veya tablo da dahil olmak üzere hedef için gerekli ayarları girin. Portal, uç nokta türüne göre veri hedefi alanını otomatik olarak yorumlar. Örneğin, veri akışı uç noktası bir MQTT uç noktasıysa, hedef ayrıntılar sayfası konuyu girmenizi ister.

Düğüm bağlantıları

Düğüm bağlantıları, düğümler arasındaki veri akışı yolunu tanımlar. Her bağlantı bir kaynak düğüm ve hedef düğüm belirterek işlem hattı oluşturur. İsteğe bağlı olarak bağlantıya bir şema ekleyebilirsiniz. Modül, başlatma sırasında şemayı alır ve bu örnekteki gibi şema doğrulamayı etkinleştirir.

İşlem deneyimi, grafik işleme düğümünü seçtiğinizde otomatik olarak düğüm bağlantıları oluşturur. Grafik oluşturulduktan sonra bağlantıları değiştiremezsiniz.

Veri akışı uç noktaları

Veri akışı grafikleri, veri akışı uç noktaları aracılığıyla dış sistemlere bağlanır. Uç nokta türü, bunu kaynak, hedef veya her ikisi olarak kullanıp kullanamayacağınızı belirler.

MQTT uç noktaları

MQTT uç noktaları hem kaynak hem de hedef işlevi görebilir. MQTT aracılarına bağlanır:

  • Azure IoT İşlemleri yerel MQTT aracısı (her veri akışında gereklidir)
  • Azure Event Grid MQTT
  • Özel MQTT aracıları

Ayrıntılı yapılandırma bilgileri için bkz . MQTT veri akışı uç noktalarını yapılandırma.

Kafka uç noktaları

Kafka uç noktaları hem kaynak hem de hedef görevi görebilir. Bu sistemler, Kafka ile uyumlu sistemlere bağlanır:

  • Azure Event Hubs (Kafka uyumlu)
  • Apache Kafka kümeleri
  • Confluent Cloud

Ayrıntılı yapılandırma bilgileri için bkz. Azure Event Hubs ve Kafka veri akışı uç noktalarını yapılandırma.

Depolama uç noktaları

Depolama uç noktaları yalnızca hedef olarak görev yapabilir. Uzun süreli veri saklama ve analiz için bulut depolama sistemlerine bağlanır:

  • Azure Data Lake Storage
  • Microsoft Fabric OneLake
  • Yerel depolama

Depolama uç noktaları genellikle veri serileştirme biçimini tanımlamak için çıkış şeması ayarlarını gerektirir.

Kayıt defteri uç noktaları

Kayıt defteri uç noktaları WASM modüllerini ve graf tanımlarını çekmek için kapsayıcı kayıt defterlerine erişim sağlar. Bunlar doğrudan veri akışında kullanılmaz, ancak grafik işleme düğümleri bunlara başvurur.

Ayrıntılı yapılandırma bilgileri için bkz. Kayıt defteri uç noktalarını yapılandırma.

Veri akışı grafiklerinde sorun giderme

Bu bölümde, veri akışı graflarıyla çalışırken karşılaşılan yaygın sorunlar için sorun giderme ipuçları sağlanır.

RegistryEndpoint bulunamadı

Veri akışı grafiği başlatılamazsa ve kayıt defteri uç noktasını bulamadığını bildirirse aşağıdakileri doğrulayın:

  1. Kayıt defteri uç noktası adıyla eşleşir: Veri akış grafınızdaki registryEndpointRef değeri, name kaynağınızın RegistryEndpoint değerine tam olarak eşleşmelidir. Yazım hataları ve büyük/küçük harf duyarlılığı olup olmadığını denetleyin.

    # List all registry endpoints in the namespace
    kubectl get registryendpoints -n azure-iot-operations
    
  2. Kayıt defteri uç noktası doğru ad alanında: Kayıt defteri uç noktası ad alanında azure-iot-operations (veya veri akışı grafınızla aynı ad alanında) olmalıdır.

  3. Kayıt defteri uç noktası hazır: Kayıt defteri uç noktanızın durumunu denetleyin:

    kubectl describe registryendpoint <REGISTRY_ENDPOINT_NAME> -n azure-iot-operations
    
  4. Authentication doğru yapılandırıldı: Yönetilen kimlik kullanıyorsanız, Azure IoT İşlemleri Arc uzantısının kayıt defterinde AcrPull izinlerine sahip olduğundan emin olun. Genel bir depoyla anonim olarak kimlik doğrulaması kullanıyorsanız, ana bilgisayar URL'sinin doğru olduğunu doğrulayın.

  5. Artefaktlar kayıt defterinde mevcut: Grafınızda referans verilen graf tanımı ve WASM modüllerinin kayıt defterinde beklenen etiketlerde mevcut olduğunu doğrulayın.

    # Check if artifacts exist (example with ORAS)
    oras manifest fetch <REGISTRY_HOST>/graph-simple:1.0.0
    

Veri akışı grafı çalışıyor ancak verileri işlenmiyor

Veri akışı grafiğini dağıttığınızda mesajlar işlenmiyorsa:

  1. Veri akışı grafı durumunu denetleyin: Veri akışı grafı kaynak durumunda hataları arayın.

    kubectl get dataflowgraph <GRAPH_NAME> -n azure-iot-operations -o yaml
    
  2. MQTT konularını doğrulama: Veri akışı grafiğinizdeki kaynak konuların verileri yayımladığınız konularla eşleştiğinden emin olun.

  3. Zaman damgalarını denetleme: Veri akışı grafiklerinde ileti işleme için Karma Mantıksal Saat (HLC) zaman damgaları kullanılır. Zamanında işlendiğinden __ts emin olmak için MQTT iletilerini yayımlarken kullanıcı özelliğini ekleyin.