Veri akışları için veri arabelleği ve disk kalıcılığını yapılandırma

Veri akışı Azure Event Hubs, Microsoft Fabric Real-Time Intelligence, Kafka veya başka bir bulut hizmeti gibi bir hedef uç noktaya ileti gönderdiğinde hedef veya ağ kullanılamaz duruma gelebilir. Azure IoT Operasyonları, iletileri arabelleğe almak ve teslimatı yeniden denemek amacıyla yerel MQTT aracı abonelik modelini kullanır.

Bu makalede, veri akışlarının hedef kesintiler sırasında iletileri nasıl koruduğu ve daha güçlü koruma için aracı arabelleği ve disk kalıcılığını nasıl yapılandıracakları açıklanmaktadır.

Hedef kesintileri sırasında veri akışlarının iletileri nasıl arabelleğe aldığını anlama

Yerel MQTT aracısını bir veri akışında kaynak uç nokta olarak doğrudan veya dolaylı olarak yayımlayan varlıklar aracılığıyla kullandığınızda, veri akışı MQTT aracısından abone olarak iletiler alır. Veri akışı, ileti başarıyla işlendikten ve hedefe teslim edildikten sonra veya filtreleme, şema doğrulaması veya iletinin süre sonu nedeniyle ileti kasıtlı olarak bırakıldıktan sonra her kaynak iletiyi kabul eder.

Hedef uç nokta kullanılamıyorsa teslimat tamamlanamaz. Bu durumda veri akışı kaynak iletiyi kabul etmez. MQTT aracısı iletiyi abone kuyruğunda tutar ve veri akışı teslimi tekrar dener. Bağlantı geri yüklendiğinde, veri akışı kuyruğa alınmış iletileri hedefe gönderir ve başarılı bir teslimden sonra bunları onaylar.

İleti yolu şu şekildedir: yayımcı veya varlıktan MQTT aracısına, MQTT aracısından veri akışına ve veri akışından hedef uç noktaya.

  1. MQTT aracısı veri akışına bir ileti sunar.
  2. Veri akışı iletiyi hedef uç noktaya gönderir.
  3. Gönderme başarılı olursa, veri akışı kaynak iletiyi kabul eder ve aracı bunu abone kuyruğundan kaldırır.
  4. Gönderme başarısız olursa veri akışı kaynak iletiyi kabul etmez. Veri aracı onu sıraya alır.
  5. Veri akışı, teslimat başarılı olana kadar, iletinin süresi dolana ya da yapılandırılmış bir sınır uygulanana kadar yeniden denenir.

Önemli

Veri akışı arabelleği sınırlıdır. Kuyruğa alınan iletiler MQTT aracısı bellek profiline, abone kuyruğu sınırlarına, disk destekli ileti arabelleği boyutuna, kalıcılık yapılandırmasına ve ileti veya oturum süre sonu durumuna tabidir. Tolerans göstermeniz gereken maksimum kesinti süresi ve aktarım hızı için bu ayarları yapılandırın.

Veri koruma yapılandırma katmanları

Hedef kesintiler sırasında iletilerin nasıl arabelleğe alınıp korunduğunu denetlemek için aşağıdaki yapılandırma katmanlarını kullanın.

Katman Nelere karşı korur? Varsayılan davranış Müşteri eylemi
Veri akışı yeniden denemesi ve engellenen onay Geçici hedef veya ağ kesintisi Yerel MQTT aracısı ve varlık destekli veri kaynakları için entegre Yapılandırma gerekmez
MQTT aracısı abone kuyruğu Veri akışı aboneliği tarafından alınan ancak henüz onaylanmamış iletiler Bellekte depolanır Bellek profilini ve abone kuyruğu sınırlarını yapılandırma
Disk destekli mesaj arabelleği Kullanılabilir belleği aşan büyük geçici birikmiş işler Disabled Dağıtım sırasında aracı, disk destekli bir ileti arabelleği ile yapılandırın.
MQTT aracısı kalıcılığı İletiler kuyruğa alınırken aracı veya pod yeniden başlatma Varsayılan olarak devre dışı Komisyoncu kalıcılığını ve abone kuyruğu kalıcılığını etkinleştir
Veri akışı requestDiskPersistence Her bir veri akışı için kalıcı abone kuyruğu depolama isteği Disabled requestDiskPersistence Veri akışında veya veri akışı grafiğinde etkinleştirin ve aracıda dinamik abone kuyruğu kalıcılığını etkinleştirin
İleti ve oturum sonlanması Sınırlanmış depolama ve yeniden yürütme davranışı Konfigüre edilebilir Kayıp toleransınıza ve kesinti pencerenize göre süre sonunu ve sınırları ayarlayın

Yerel MQTT aracısı abone kuyruğu varsayılan olarak bellekte depolanır. MQTT aracısını diski iki farklı yolla kullanacak şekilde yapılandırabilirsiniz:

  • Disk destekli ileti arabelleği: Kuyruklar mevcut belleğin ötesine geçtiğinde taşma arabelleği görevi görerek diski kullanır. Bu ayar daha büyük geçici birikimlere yardımcı olur, ancak aracı yeniden başlatmalarında kalıcı dayanıklılık ile aynı şey değildir.
  • MQTT aracısı kalıcılığı: Kuyruğa alınan iletilerin yeniden başlatmalardan veya güç kaybı durumlarından sonra korunabilmesi için abone kuyrukları da dahil olmak üzere seçilen aracı verilerini diske kaydeder.

Aracı yapılandırma ayrıntıları için bakınız:

Arabelleğe alma yapılandırmasını seçin

İş yükünüz için kesinti süresi ve dayanıklılık gereksinimlerine göre bir yapılandırma seçin:

  • Kısa süreli bulut veya ağ kesintileri için varsayılan bellek içi abone kuyruğu yeterli olabilir.
  • Daha yüksek aktarım hızı veya daha uzun geçici kesintiler için disk destekli ileti arabelleği yapılandırın.
  • Yeniden başlatma veya güç kaybı koruması için, MQTT aracısı kalıcılığını ve abone kuyruğu kalıcılığını etkinleştirin, ardından bunu veri akışında veya veri akışı grafiğinde requestDiskPersistence etkinleştirin.
  • Sınırlı depolama ortamları için, aracı abone kuyruğu sınırlarını, ileti süre sonunu ve izlemesini yapılandırarak kuyruk sınırlarını uygular ve iletileri politikanıza göre düşürür veya reddeder.

Örnek: Hedefteki kesinti

Kaynak uç nokta olarak varsayılan yerel MQTT aracısını ve hedef uç nokta olarak Azure Event Hubs kullanarak bir veri akışı oluşturduğunuzu varsayalım. Veri akışı ile Azure Event Hubs arasındaki bağlantı kesilirse, veri akışı mesaj gönderme işlemlerini yeniden dener ve kaynak iletileri onaylamaz. MQTT aracısı, tanınmayan iletileri kuyruğa alır. Varsayılan ayarlarla kuyruk bellekte depolanır. Disk destekli ileti arabelleği ile kuyruk diske taşabilir. Aracının kalıcılık özelliği ve veri akışı requestDiskPersistence ile, kuyruğa alınan iletiler yapılandırılmış kalıcılık, süre sonu ve depolama sınırlarına bağlı olarak aracı yeniden başlatıldığında da varlıklarını sürdürebilir.

Veri akışı için disk kalıcılığını etkinleştirme

Disk kalıcılığı, veri akışlarının ve veri akışı graflarının yeniden başlatmalar arasında işleme durumunu sürdürmesini sağlar. Bu özelliği etkinleştirdiğinizde, MQTT aracısı abone kuyruğundaki iletiler gibi verileri diskte kalıcı hale toplar. Bu yaklaşım, güç kesintileri veya aracı yeniden başlatmaları sırasında veri akışınızın veri kaynağının kuyruğa alınan verileri kaybetmemesini sağlar. Veri akışı başına kalıcılık yapılandırıldığından aracı en iyi performansı korur, bu nedenle yalnızca ihtiyacı olan veri akışları bu özelliği kullanır.

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

  • Veri akışı, kaynak olarak MQTT aracısını veya varlığını kullanır.
  • MQTT aracısı, abone kuyrukları gibi veri türü için olarak ayarlanmış Enabled dinamik kalıcılık moduyla kalıcılığı etkinleştirmiştir.

MQTT aracısı kalıcılık yapılandırması hakkında ayrıntılı bilgi için bkz. MQTT aracısı kalıcılığını yapılandırma.

Ayar Enabled veya Disabled kabul eder. Disabled varsayılan değerdir.

Veri akışı için yapılandırma

Bir veri akışı oluşturduğunuzda veya düzenlerken Düzenle'yi ve ardından Veri kalıcılığı iste'nin yanındaki Evet'i seçin.

Veri akışı grafı için yapılandırma

Veri akışı grafiği oluştururken veya düzenlerken Düzenle'yi ve ardından Veri kalıcılığı iste'nin yanındaki Evet'i seçin.