Záruky doručení událostí (Azure Stream Analytics)
Dotazovací jazyk Azure Stream Analytics rozšiřuje syntaxi SQL a umožňuje složité výpočty nad datovými proudy událostí. U Stream Analytics stojí za to prodiskutovat některé koncepty související s doručováním událostí:
- Přesně jednou zpracování
- Přesně jednou doručení
- Duplicitní záznamy
Kromě následujících konceptů je důležité zvážit možnost spuštění úlohy , abyste měli jistotu, že nedojde ke ztrátě dat.
Přesně jednou zpracování
Přesně jednou zárukou zpracování znamená, že při sadě vstupů systém vždy vrací stejné výsledky. To je velmi důležité pro opakovatelnost a platí i v případě restartování úlohy nebo pro více úloh spuštěných paralelně na stejném vstupu. Azure Stream Analytics zaručuje přesně jedno zpracování.
Přesně jednou doručení
Záruka přesně jednou doručení znamená, že všechny výstupy z přesně jednou zpracování se do výstupní jímky doručí přesně jednou, takže neexistuje žádný duplicitní výstup. To vyžaduje, aby bylo dosaženo transakčních schopností na výstupním adaptéru.
Azure Stream Analytics zaručuje alespoň jedno doručení do výstupních jímek, což zaručuje, že se vydají všechny výsledky, ale může dojít k duplicitním výsledkům. Nicméně doručení přesně jednou může být dosaženo s několika výstupy, jako je Azure Cosmos DB nebo Azure SQL.
Duplicitní záznamy
Z důvodu záruky minimálně jednoho doručení se při spuštění úlohy Stream Analytics můžou ve výstupních datech občas objevit duplicitní záznamy. Tyto duplicitní záznamy se očekávají, protože výstupní adaptéry Azure Stream Analytics nezapisují výstupní události transakčním způsobem. K tomuto scénáři duplicitního záznamu může dojít v případě, že nastane jedna z následujících podmínek:
- Instance Azure se upgraduje, když je úloha spuštěná.
- Úloha Stream Analytics se upgraduje nebo dojde k problému s připojením nebo spolehlivostí výstupu úlohy
- Instance Azure, která úlohu spouští, má výpadek
- Úloha Stream Analytics se spouští s možností při posledním zastavení
Podřízený příjemce výstupních událostí musí události odvodit pomocí logické identity událostí. Pokud například agregujete události podle skupin v přeskakujícím okně, logickou identitou události jsou skupiny a čas ukončení přeskakujícího okna. Pokud spouštíte předávací dotaz, možná budete muset k události přenést jedinečné ID, aby bylo možné provést odstranění duplicitních identifikátorů.
Výstup podporující přesné doručení s využitím Azure Stream Analytics
Azure Cosmos DB
Azure Stream Analytics s využitím služby Azure Cosmos DB zaručuje doručení přesně jednou. Vzhledem k tomu, že Azure Stream Analytics používá upsert, uživatel nevyžaduje žádnou akci. Přečtěte si další informace o výstupu z Azure Stream Analytics do služby Azure Cosmos DB.
SQL
Při použití výstupu SQL můžou uživatelé dosáhnout doručení přesně jednou, pokud jsou splněny následující požadavky:
- všechny výstupní události streamování mají přirozený klíč, tj. jsou jednoznačně identifikovatelné polem nebo kombinací polí.
- výstupní tabulka SQL má jedinečné omezení (nebo primární klíč) vytvořené pomocí přirozeného klíče výstupních událostí.
To stačí k tomu, aby se zabránilo duplicitám, protože výstup SQL respektuje všechna omezení umístěná v tabulce tím, že přeskočí všechny události, které způsobují jedinečné porušení omezení.
Tabulka Azure
Všechny entity v tabulce Azure Storage jsou jednoznačně identifikovány zřetězením RowKey
polí a PartitionKey
. Azure Stream Analytics upserts entity, takže hodnota entity tabulky bude nejnovější výstupní událost s odpovídající RowKey
/PartitionKey
kombinací. Pokud tedy chcete dosáhnout přesně jednou doručení, ujistěte se, že každá výstupní událost má jedinečnou RowKey
/PartitionKey
kombinaci. Pokud to uděláte, duplicitní události přepíšou starší verze. (Pole definované Timestamp
systémem, což je čas poslední změny entity, se v tomto případě stále změní.)