Eseménykézbesítési garanciák (Azure Stream Analytics)
Az Azure Stream Analytics lekérdezési nyelve kiterjeszti az SQL-szintaxist, hogy összetett számításokat lehessen lehetővé tenni az eseménystreameken keresztül. A Stream Analyticsben az eseménykézbesítéssel kapcsolatos fogalmakról érdemes beszélni:
- Pontosan egyszer történő feldolgozás
- Pontosan egyszer történő kézbesítés
- Rekordok duplikálása
Az alábbiakban részletezett fogalmak mellett fontos megfontolni a feladat indítási lehetőségét , hogy biztosan ne történjen adatvesztés.
Pontosan egyszeri feldolgozás
A pontosan egyszeri feldolgozási garancia azt jelenti, hogy a bemenetek egy készlete esetén a rendszer mindig ugyanazokat az eredményeket adja vissza. Ez nagyon fontos az megismételhetőség szempontjából, és akkor is érvényes, ha a feladat újraindul, vagy több, ugyanazon a bemeneten párhuzamosan futó feladaton. Az Azure Stream Analytics pontosan egyszer garantálja a feldolgozást.
Pontosan egyszeri kézbesítés
A pontosan egyszeri kézbesítési garancia azt jelenti, hogy a pontosan egyszeri feldolgozás összes kimenete pontosan egyszer érkezik a kimeneti fogadóba, így nincs ismétlődő kimenet. Ehhez tranzakciós képességekre van szükség a kimeneti adapteren.
Az Azure Stream Analytics legalább egyszer biztosítja a kimeneti fogadóknak történő kézbesítést, ami garantálja, hogy az összes eredmény kimenete ki lesz véve, de ismétlődő eredmények fordulhatnak elő. A pontos kézbesítés azonban számos kimenettel, például az Azure Cosmos DB-vel vagy Azure SQL érhető el.
Rekordok duplikálása
A legalább egyszeri kézbesítési garancia miatt, ha egy Stream Analytics-feladat fut, időnként ismétlődő rekordok is megjelenhetnek a kimeneti adatokban. Ezek az ismétlődő rekordok azért várhatók, mert az Azure Stream Analytics kimeneti adapterei nem tranzakciósan írják meg a kimeneti eseményeket. Ez a "duplikált rekord" forgatókönyv az alábbi feltételek valamelyike esetén fordulhat elő:
- Az Azure-példány frissítése folyamatban van a feladat futtatása közben
- A Stream Analytics-feladat frissítve van, vagy probléma merül fel a feladat kimenetéhez való csatlakozással vagy megbízhatósággal kapcsolatban
- A feladatot futtató Azure-példány leállt
- A Stream Analytics-feladat a legutóbbi leállításkor beállítással indul el
A kimeneti események alsóbb rétegbeli felhasználójának deduplikálnia kell az eseményeket az események logikai identitásával. Ha például csoportok szerint összesíti az eseményeket egy átfedésmentes ablakban, az esemény logikai identitása a csoportok és az átfedésmentes ablak befejezési időpontja. Ha átmenő lekérdezést futtat, előfordulhat, hogy a deduplikációhoz egyedi azonosítót kell tartalmaznia az eseményen.
Az Azure Stream Analytics használatával történő pontos egyszeri teljesítést támogató kimenet
Azure Cosmos DB
Az Azure Cosmos DB használatával az Azure Stream Analytics pontosan egyszeri kézbesítést garantál. Mivel az Azure Stream Analytics upsert szolgáltatást használ, a felhasználónak nincs szüksége műveletre. További információ az Azure Stream Analytics Azure Cosmos DB-be történő kimenetéről.
SQL
SQL-kimenet használatakor a felhasználók pontosan egyszeri kézbesítést érhetnek el, ha a következő követelmények teljesülnek:
- minden kimeneti streamelési esemény rendelkezik egy természetes kulccsal, azaz egy mező vagy mezőkombináció alapján egyedileg azonosíthatók.
- a kimeneti SQL-tábla egyedi kényszerrel (vagy elsődleges kulccsal) rendelkezik, amely a kimeneti események természetes kulcsával lett létrehozva.
Ez elegendő az ismétlődések elkerüléséhez, mivel az SQL-kimenet betartja a táblára vonatkozó korlátozásokat az egyedi kényszer megsértését okozó események kihagyásával.
Azure-tábla
Az Azure Storage-tábla összes entitását egyedileg azonosítja a és PartitionKey
a RowKey
mező összefűzésével. Az Azure Stream Analytics frissíti az entitásokat, így a táblaentitás értéke a legújabb kimeneti esemény lesz a megfelelő RowKey
/PartitionKey
kombinációval. Ezért a pontos egyszeri teljesítés érdekében győződjön meg arról, hogy minden kimeneti esemény egyedi RowKey
/PartitionKey
kombinációval rendelkezik. Ha ez megtörtént, a duplikált események felülírják a korábbi verziókat. (A rendszer által definiált Timestamp
mező, amely az entitás utolsó módosítási időpontja, ebben az esetben is megváltozik.)