Dela via


Leveransgarantier för händelser

✅ Azure Stream Analytics

Azure Stream Analytics-frågespråket utökar SQL-syntaxen för att aktivera komplexa beräkningar över händelseströmmar. Med Stream Analytics finns det några begrepp som är relaterade till händelseleverans som är värda att diskutera:

  • Hantering exakt en gång
  • Exakt en gång leverans
  • Duplicate records

Förutom de här begreppen som beskrivs nedan är det viktigt att överväga startalternativet för ett jobb för att se till att ingen dataförlust kan inträffa.

Exactly-once processing

Exakt en gång bearbetningsgaranti innebär att systemet alltid returnerar samma resultat med tanke på en uppsättning indata. Detta är mycket viktigt för repeterbarhet och gäller även vid omstart av jobbet eller flera jobb som körs parallellt på samma indata. Azure Stream Analytics garanterar exakt en gång bearbetning.

Exactly-once delivery

Leveransgaranti exakt en gång innebär att alla utdata från bearbetning exakt en gång levereras till utdatamottagaren exakt en gång, så det finns inga duplicerade utdata. Detta kräver att transaktionsfunktioner på utdataadaptern uppnås.

Azure Stream Analytics garanterar leverans minst en gång till utdatamottagare, vilket garanterar att alla resultat matas ut, men duplicerade resultat kan inträffa. Leverans exakt en gång kan dock uppnås med flera utdata, till exempel Azure Cosmos DB eller Azure SQL.

Duplicate records

På grund av leveransgarantin minst en gång kan dubbletter av poster ibland märkas i utdata när ett Stream Analytics-jobb körs. Dessa duplicerade poster förväntas eftersom Azure Stream Analytics-utdatakort inte skriver utdatahändelserna transaktionsmässigt. Det här scenariot med "duplicerad post" kan uppstå om något av följande villkor inträffar:

  • Azure-instansen uppgraderas medan jobbet körs
  • Stream Analytics-jobbet uppgraderas eller ett problem uppstår med anslutningen eller tillförlitligheten för jobbutdata
  • Azure-instansen som kör jobbet har ett avbrott
  • Stream Analytics-jobbet startas med alternativet när det senast stoppades

Nedströmskonsumenten av utdatahändelserna måste deduplicera händelserna med hjälp av den logiska identiteten för händelserna. Om du till exempel aggregerar händelser efter grupper i ett rullande fönster är händelsens logiska identitet grupperna och det rullande fönstrets sluttid. Om du kör en genomströmningsfråga kan du behöva bära ett unikt ID för händelsen för att dedupliceras.

Utdata som stöder exakt en gång-leverans med Azure Stream Analytics

Azure Cosmos DB

Med Azure Cosmos DB garanterar Azure Stream Analytics leverans exakt en gång. Eftersom Azure Stream Analytics använder upsert krävs ingen åtgärd av användaren. Se mer information om Azure Stream Analytics-utdata till Azure Cosmos DB.

SQL

När du använder SQL-utdata kan användarna uppnå leverans exakt en gång om följande krav uppfylls:

  • alla strömmande utdatahändelser har en naturlig nyckel, d.v.s. är unikt identifierbara antingen av ett fält eller en kombination av fält.
  • SQL-utdatatabellen har en unik begränsning (eller primärnyckel) som skapats med hjälp av den naturliga nyckeln för utdatahändelserna.

Detta räcker för att undvika dubbletter eftersom SQL-utdata respekterar eventuella begränsningar som finns i tabellen genom att hoppa över händelser som orsakar en unik begränsningsöverträdelse.

Azure Table

Alla entiteter i en Azure Storage-tabell identifieras unikt genom sammanlänkningen av fälten RowKey och PartitionKey . Azure Stream Analytics upserts entiteter, så värdet för en tabellentitet blir den senaste utdatahändelsen med motsvarande RowKey/PartitionKey kombination. Se därför till att varje utdatahändelse har en unik RowKey/PartitionKey kombination för att uppnå leverans exakt en gång. Om detta görs skrivs dubbletthändelser över tidigare versioner. (Det systemdefinierade Timestamp fältet, som är den senaste ändringstiden för entiteten, ändras fortfarande i det här fallet.)

See Also

Time Management