Adatpufferelés és lemezmegőrzés konfigurálása adatfolyamokhoz

Ha egy adatfolyam üzeneteket küld egy célvégpontnak, például Azure Event Hubs, Microsoft Fabric Real-Time Intelligencia, Kafka vagy más felhőszolgáltatásnak, előfordulhat, hogy a cél vagy a hálózat elérhetetlenné válik. Azure IoT műveletek a helyi MQTT-közvetítő-előfizetési modellt használja az üzenetek pufferelésére és a kézbesítés újrapróbálkozására.

Ez a cikk azt ismerteti, hogy az adatfolyamok hogyan védik az üzeneteket a célkimaradások során, és hogyan konfigurálhatja a közvetítői pufferelést és a lemezmegőrzést az erősebb védelem érdekében.

Hogyan pufferelik az adatfolyamok az üzeneteket a célkimaradások során?

Amikor a helyi MQTT-közvetítőt használja forrásvégpontként egy adatfolyamban, akár közvetlenül, akár közvetetten, közzétevő eszközökön keresztül, az adatfolyam előfizetőként fogadja az MQTT-közvetítőtől érkező üzeneteket. Az adatfolyam minden forrásüzenetet nyugtáz, miután az üzenet sikeresen feldolgozva és kézbesítve lett a célhelyre, vagy miután a rendszer szándékosan elvetette az üzenetet szűrés, sémaérvényesítés vagy üzenet lejárata miatt.

Ha a célvégpont nem érhető el, a kézbesítés nem fejezhető be. Ebben az esetben az adatfolyam nem nyugtázza a forrásüzenetet. Az MQTT-közvetítő megtartja az üzenetet az előfizetői üzenetsorban, és az adatfolyam újrapróbálkozza a kézbesítést. A kapcsolat visszaállításakor az adatfolyam üzenetsorba helyezett üzeneteket küld a célhelyre, és a sikeres kézbesítés után nyugtázza őket.

Az üzenet útja a következő: közzétevő vagy eszköz az MQTT-közvetítőhöz, az MQTT-közvetítő az adatfolyamhoz, és az adatfolyam a célvégponthoz vezet.

  1. Az MQTT-közvetítő üzenetet küld az adatfolyamnak.
  2. Az adatfolyam elküldi az üzenetet a célvégpontnak.
  3. Ha a küldés sikeres, az adatfolyam nyugtázza a forrásüzenetet, és a közvetítő eltávolítja azt az előfizetői üzenetsorból.
  4. Ha a küldés sikertelen, az adatfolyam nem nyugtázza a forrásüzenetet. A közvetítő várólistán tartja.
  5. Az adatfolyam mindaddig újrapróbálkozza a kézbesítést, amíg sikeres nem lesz, az üzenet lejár, vagy egy konfigurált korlát lép érvénybe.

Fontos

Az adatfolyam-pufferelés korlátozott. Az üzenetsorba helyezett üzenetekre az MQTT-közvetítő memóriaprofilja, az előfizetői üzenetsor korlátai, a lemezről támogatott üzenetpuffer mérete, az adatmegőrzési konfiguráció, valamint az üzenetek vagy munkamenetek lejárata vonatkozik. Konfigurálja ezeket a beállításokat a maximális üzemkimaradási időtartamra és átviteli sebességre, amit el kell viselnie.

Adatvédelmi konfigurációs rétegek

A következő konfigurációs rétegek segítségével szabályozhatja, hogy az üzenetek hogyan legyenek pufferelve és védve a célkimaradások során.

Réteg Mi ellen véd? Alapértelmezett viselkedés Ügyfélművelet
Adatfolyam újrapróbálkozása és a nyugtázás visszatartása Ideiglenes célhely vagy hálózatkimaradás Beépített helyi MQTT-közvetítőhöz és eszközalapú forrásokhoz Nem igényel konfigurálást
MQTT-közvetítő előfizetői sor Adatfolyam-előfizetés által fogadott, de még nem nyugtázott üzenetek Memóriában tárolva Memóriaprofil és előfizetői üzenetsor korlátainak konfigurálása
Lemezalapú üzenetpuffer Nagy, a rendelkezésre álló memóriát meghaladó ideiglenes teendőnaplók Disabled A közvetítő konfigurálása üzembe helyezéskor lemezalapú üzenetpufferrel
MQTT-közvetítők megőrzése Közvetítő vagy pod újraindítása, amíg az üzenetek sorban állnak Alapértelmezés szerint letiltva A közvetítő tartósságának és az előfizetői üzenetsor tartósságának engedélyezése
Adatfolyam requestDiskPersistence Adatfolyamonkénti kérés állandó előfizetői üzenetsor-tárolóhoz Disabled Engedélyezze a requestDiskPersistence az adatfolyamon vagy az adatfolyam-gráfon, és engedélyezze a dinamikus előfizetői sor perzisztenciáját a közvetítőn.
Üzenet és munkamenet lejárata A korlátozott tárolás és a visszajátszás viselkedése Configurable A lejárat és a korlátok beállítása a veszteségtűrés és a kimaradás időszaka alapján

A helyi MQTT-közvetítő előfizetői üzenetsora alapértelmezés szerint a memóriában van tárolva. Az MQTT-közvetítőt kétféleképpen konfigurálhatja a lemez használatára:

  • Lemezalapú üzenetpuffer: A lemezt átfedő pufferként használja, ha az üzenetsorok túllépik a rendelkezésre álló memóriát. Ez a beállítás segít a nagyobb ideiglenes torlódások kezelésében, de nem ugyanaz, mint az állandó megmaradás a bróker újraindítások során.
  • MQTT-közvetítői adatmegőrzés: Megőrzi a kiválasztott közvetítőadatokat, beleértve az előfizetői üzenetsorokat is, hogy az üzenetsorba helyezett üzenetek túléljék az újraindításokat vagy az áramkimaradást.

A közvetítő konfigurációjának részleteiért lásd:

Pufferelési konfiguráció kiválasztása

Válasszon ki egy konfigurációt a számítási feladat kimaradási időtartama és tartóssági követelményei alapján:

  • Rövid átmeneti felhő- vagy hálózati kimaradások esetén a memóriabeli alapértelmezett előfizetői üzenetsor elegendő lehet.
  • Nagyobb átviteli sebesség vagy hosszabb átmeneti kimaradások esetén konfigurálja a lemez által támogatott üzenetpuffert.
  • Újraindításhoz vagy energiaveszteség-védelemhez engedélyezze az MQTT-közvetítők megőrzését és az előfizetői üzenetsorok megőrzését, majd engedélyezze requestDiskPersistence az adatfolyamon vagy az adatfolyam-grafikonon.
  • Korlátozott tárolási környezetek esetén konfigurálja az előfizetői üzenetsor korlátait, az üzenetek lejáratát és a figyelést, hogy a közvetítő kényszerítse az üzenetsorkorlátokat, és elvetje vagy elutasítsa az üzeneteket a szabályzatnak megfelelően.

Példa: Célkimaradás

Tegyük fel, hogy egy adatfolyamot az alapértelmezett helyi MQTT-közvetítővel hoz létre forrásvégpontként, és Azure Event Hubs célvégpontként. Ha megszakad a kapcsolat az adatfolyam és a Azure Event Hubs között, az adatfolyam újrapróbálkozásokat küld, és nem nyugtázza a forrásüzeneteket. Az MQTT-közvetítő várólistára állítja a nem ismert üzeneteket. Az alapértelmezett beállításokkal az üzenetsor a memóriában van tárolva. A lemezhátterű üzenetpufferrel az üzenetsor átfolyhat a lemezre. A közvetítői adatmegőrzés és az adatfolyam requestDiskPersistenceesetén az üzenetsoros üzenetek túlélhetik a közvetítő újraindítását, a konfigurált megőrzési, lejárati és tárolási korlátoktól függően.

Lemezmegőrzés engedélyezése adatfolyamhoz

A lemezmegőrzés lehetővé teszi, hogy az adatfolyamok és az adatfolyam-grafikonok az újraindítások során is megőrizze a feldolgozási állapotot. Ha engedélyezi ezt a funkciót, az MQTT-közvetítő megőrzi az adatokat, például az előfizetői üzenetsor üzenetsorában lévő üzeneteket a lemezen. Ez a módszer segít biztosítani, hogy az adatfolyam adatforrása ne veszítsen el várólista-adatokat az áramkimaradások vagy a közvetítő újraindítása során. A közvetítő azért tartja fenn az optimális teljesítményt, mert a megőrzés adatfolyamonként van konfigurálva, így csak a szükséges adatfolyamok használják ezt a funkciót.

Az adatfolyam az előfizetés során egy MQTTv5 felhasználói tulajdonság használatával kéri az adatmegőrzést. Ez a funkció csak akkor működik, ha:

  • Az adatfolyam az MQTT-közvetítőt vagy -objektumot használja forrásként.
  • Az MQTT-közvetítő az adattípushoz Enabled beállított dinamikus adatmegőrzési móddal működik, mint például az előfizetői sorok kezelése.

Az MQTT-közvetítő adatmegőrzési konfigurációjáról további információt az MQTT-közvetítő megőrzésének konfigurálása című témakörben talál.

A beállítás elfogadja a Enabled vagy Disabled értéket. A Disabled az alapértelmezett.

Adatfolyam konfigurálása

Adatfolyam létrehozásakor vagy szerkesztésekor válassza a Szerkesztés lehetőséget, majd az Adatmegőrzés kérése mellett válassza az Igen lehetőséget.

Adatfolyam-diagram konfigurálása

Adatfolyam-diagram létrehozásakor vagy szerkesztésekor válassza a Szerkesztés lehetőséget, majd válassza az Igen lehetőséget az Adatmegőrzés kérése mellett.