Stöd för ändringsflöde i Azure Blob Storage

Syftet med ändringsflödet är att tillhandahålla transaktionsloggar för alla ändringar som sker i blobarna och blobmetadata i ditt lagringskonto. Ändringsflödet ger en ordnad, garanterad, varaktig, oföränderlig, skrivskyddad logg över dessa ändringar. Klientprogram kan när som helst läsa dessa loggar, antingen i direktuppspelning eller i batchläge. Med ändringsflödet kan du skapa effektiva och skalbara lösningar som bearbetar ändringshändelser som inträffar i ditt Blob Storage-konto till en låg kostnad.

Så här fungerar ändringsflödet

Ändringsflödesposter lagras som blobar i en särskild container i ditt lagringskonto till standardpriskostnaden för blobar. Du kan styra kvarhållningsperioden för dessa filer baserat på dina krav (se villkoren för den aktuella versionen). Ändringshändelser läggs till i ändringsflödet som poster i Apache Avro-formatspecifikationen : ett kompakt, snabbt binärt format som ger omfattande datastrukturer med infogat schema. Det här formatet används ofta i Hadoop-ekosystemet, Stream Analytics och Azure Data Factory.

Du kan bearbeta dessa loggar asynkront, stegvis eller i sin helhet. Valfritt antal klientprogram kan oberoende läsa ändringsflödet parallellt och i sin egen takt. Analysprogram som Apache Drill eller Apache Spark kan använda loggar direkt som Avro-filer, vilket gör att du kan bearbeta dem till en låg kostnad, med hög bandbredd och utan att behöva skriva ett anpassat program.

Följande diagram visar hur poster läggs till i ändringsflödet:

Diagram som visar hur ändringsflödet fungerar för att tillhandahålla en ordnad logg över ändringar i blobar

Stöd för ändringsflöde passar bra för scenarier som bearbetar data baserat på objekt som har ändrats. Till exempel kan program:

  • Uppdatera ett sekundärt index, synkronisera med ett cacheminne, sökmotor eller andra scenarier för innehållshantering.
  • Extrahera företagsanalysinsikter och mått baserat på ändringar som görs i dina objekt, antingen med direktuppspelning eller i ett gruppläge.
  • Lagra, granska och analysera ändringar i dina objekt under en viss tidsperiod, för att se säkerhet, efterlevnad eller information om företagets datahantering.
  • Skapa lösningar för säkerhetskopiering, spegling eller replikering av objekttillstånd i ditt konto för katastrofhantering eller efterlevnad.
  • Skapa anslutna programpipelines som reagerar på ändringshändelser eller schemakörningar baserat på skapade eller ändrade objekt.

Ändringsflöde är en förutsättning för objektreplikering och återställning till tidpunkt för blockblobar.

Anteckning

Ändringsflöde ger en beständig, ordnad loggmodell för de ändringar som sker i en blob. Ändringar skrivs och görs tillgängliga i ändringsflödesloggen inom några minuter efter ändringen. Om ditt program måste reagera på händelser mycket snabbare än så kan du överväga att använda Blob Storage-händelser i stället. Blob Storage-händelser tillhandahåller engångshändelser i realtid som gör att dina Azure Functions eller program snabbt kan reagera på ändringar som inträffar i en blob.

Aktivera och inaktivera ändringsflödet

Du måste aktivera ändringsflödet för ditt lagringskonto för att börja samla in och registrera ändringar. Inaktivera ändringsflödet för att sluta samla in ändringar. Du kan aktivera och inaktivera ändringar med hjälp av Azure Resource Manager-mallar på portalen eller PowerShell.

Här är några saker att tänka på när du aktiverar ändringsflödet.

  • Det finns bara en ändringsfeed för blobtjänsten i varje lagringskonto. Ändringsflödesposter lagras i containern $blobchangefeed .

  • Ändringarna Skapa, Uppdatera och Ta bort registreras endast på blobtjänstnivå.

  • Ändringsflödet samlar in alla ändringar för alla tillgängliga händelser som inträffar på kontot. Klientprogram kan filtrera bort händelsetyper efter behov. (Se villkoren för den aktuella versionen).

  • Endast standardkonton för generell användning v2, Premium-blockblob och Blob Storage-konton kan aktivera ändringsflödet. Konton med ett hierarkiskt namnområde aktiverat stöds inte för närvarande. Allmänna v1-lagringskonton stöds inte men kan uppgraderas till generell användning v2 utan driftstopp. Mer information finns i Uppgradera till ett GPv2-lagringskonto .

Aktivera ändringsflöde för ditt lagringskonto med hjälp av Azure-Portal:

  1. I Azure-Portal väljer du ditt lagringskonto.

  2. Gå till alternativet Dataskydd under Tiedonhallinta.

  3. Under Spårning väljer du Aktivera blobändringsflöde.

  4. Välj knappen Spara för att bekräfta dina dataskyddsinställningar.

    Skärmbild som visar hur du aktiverar ändringsflöde i Azure-Portal

Använda ändringsflödet

Ändringsflödet genererar flera metadata och loggfiler. Dessa filer finns i $blobchangefeed containern för lagringskontot. Containern $blobchangefeed kan visas antingen via Azure-Portal eller via Eksplorator usługi Azure Storage.

Dina klientprogram kan använda ändringsflödet med hjälp av biblioteket för blobändringsflödesprocessorn som medföljer SDK:et för ändringsflödesprocessorn.

Se Bearbeta ändringsflödesloggar i Azure Blob Storage.

Ändra flödessegment

Ändringsflödet är en logg över ändringar som är ordnade i timsegment men läggs till och uppdateras med några minuters mellanrum. Dessa segment skapas bara när det finns blobändringshändelser som inträffar under den timmen. Detta gör att klientprogrammet kan använda ändringar som sker inom vissa tidsperioder utan att behöva söka igenom hela loggen. Mer information finns i Specifikationer.

Ett tillgängligt timsegment i ändringsflödet beskrivs i en manifestfil som anger sökvägarna till ändringsflödesfilerna för det segmentet. Listan över den $blobchangefeed/idx/segments/ virtuella katalogen visar dessa segment ordnade efter tid. Sökvägen till segmentet beskriver början av det timintervall som segmentet representerar. Du kan använda listan för att filtrera bort de segment av loggar som är intressanta för dig.

Name                                                                    Blob Type    Blob Tier      Length  Content Type    
----------------------------------------------------------------------  -----------  -----------  --------  ----------------
$blobchangefeed/idx/segments/1601/01/01/0000/meta.json                  BlockBlob                      584  application/json
$blobchangefeed/idx/segments/2019/02/22/1810/meta.json                  BlockBlob                      584  application/json
$blobchangefeed/idx/segments/2019/02/22/1910/meta.json                  BlockBlob                      584  application/json
$blobchangefeed/idx/segments/2019/02/23/0110/meta.json                  BlockBlob                      584  application/json

Anteckning

$blobchangefeed/idx/segments/1601/01/01/0000/meta.json Skapas automatiskt när du aktiverar ändringsflödet. Du kan ignorera den här filen på ett säkert sätt. Det är en alltid tom initieringsfil.

Segmentmanifestfilen (meta.json) visar sökvägen till ändringsflödesfilerna för det segmentet i chunkFilePaths egenskapen. Här är ett exempel på en segmentmanifestfil.

{
    "version": 0,
    "begin": "2019-02-22T18:10:00.000Z",
    "intervalSecs": 3600,
    "status": "Finalized",
    "config": {
        "version": 0,
        "configVersionEtag": "0x8d698f0fba563db",
        "numShards": 2,
        "recordsFormat": "avro",
        "formatSchemaVersion": 1,
        "shardDistFnVersion": 1
    },
    "chunkFilePaths": [
        "$blobchangefeed/log/00/2019/02/22/1810/",
        "$blobchangefeed/log/01/2019/02/22/1810/"
    ],
    "storageDiagnostics": {
        "version": 0,
        "lastModifiedTime": "2019-02-22T18:11:01.187Z",
        "data": {
            "aid": "55e507bf-8006-0000-00d9-ca346706b70c"
        }
    }
}

Anteckning

Containern $blobchangefeed visas först när du har aktiverat ändringsflödesfunktionen för ditt konto. Du måste vänta några minuter efter att du har aktiverat ändringsflödet innan du kan lista blobarna i containern.

Ändra händelseposter

Ändringsflödesfilerna innehåller en serie ändringshändelseposter. Varje ändringshändelsepost motsvarar en ändring av en enskild blob. Posterna serialiseras och skrivs till filen med apache Avro-formatspecifikationen . Posterna kan läsas med hjälp av Avro-filformatspecifikationen. Det finns flera bibliotek tillgängliga för att bearbeta filer i det formatet.

Ändringsflödesfiler lagras i den $blobchangefeed/log/ virtuella katalogen som tilläggsblobar. Den första ändringsflödesfilen under varje sökväg kommer att ha 00000 i filnamnet (till exempel 00000.avro). Namnet på varje efterföljande loggfil som läggs till i sökvägen ökar med 1 (till exempel: 00001.avro).

Scheman för händelseposter

En beskrivning av varje egenskap finns i Azure Event Grid händelseschema för Blob Storage. Händelserna BlobPropertiesUpdated och BlobSnapshotCreated är för närvarande exklusiva för ändringsflöde och stöds ännu inte för Blob Storage-händelser.

Anteckning

Ändringsflödesfilerna för ett segment visas inte omedelbart när ett segment har skapats. Fördröjningens längd ligger inom det normala intervallet för publiceringsfördröjningen för ändringsflödet, vilket är inom några minuter efter ändringen.

Schemaversion 1

Följande händelsetyper kan samlas in i ändringsflödesposterna med schemaversion 1:

  • BlobSkapad
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotSkapad

I följande exempel visas en ändringshändelsepost i JSON-format som använder händelseschema version 1:

{
    "schemaVersion": 1,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2022-02-17T12:59:41.4003102Z",
    "id": "322343e3-8020-0000-00fe-233467066726",
    "data": {
        "api": "PutBlob",
        "clientRequestId": "f0270546-168e-4398-8fa8-107a1ac214d2",
        "requestId": "322343e3-8020-0000-00fe-233467000000",
        "etag": "0x8D9F2155CBF7928",
        "contentType": "application/octet-stream",
        "contentLength": 128,
        "blobType": "BlockBlob",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "storageDiagnostics": {
            "bid": "9d725a00-8006-0000-00fe-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Schemaversion 3

Följande händelsetyper kan samlas in i ändringsflödesposterna med schemaversion 3:

  • BlobSkapad
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotSkapad

I följande exempel visas en ändringshändelsepost i JSON-format som använder händelseschema version 3:

{
    "schemaVersion": 3,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2022-02-17T13:05:19.6798242Z",
    "id": "eefe8fc8-8020-0000-00fe-23346706daaa",
    "data": {
        "api": "PutBlob",
        "clientRequestId": "00c0b6b7-bb67-4748-a3dc-86464863d267",
        "requestId": "eefe8fc8-8020-0000-00fe-233467000000",
        "etag": "0x8D9F216266170DC",
        "contentType": "application/octet-stream",
        "contentLength": 128,
        "blobType": "BlockBlob",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "previousInfo": {
            "SoftDeleteSnapshot": "2022-02-17T13:08:42.4825913Z",
            "WasBlobSoftDeleted": "true",
            "BlobVersion": "2024-02-17T16:11:52.0781797Z",
            "LastVersion" : "2022-02-17T16:11:52.0781797Z",
            "PreviousTier": "Hot"
        },
        "snapshot": "2022-02-17T16:09:16.7261278Z",
        "blobPropertiesUpdated" : {
            "ContentLanguage" : {
                "current" : "pl-Pl",
                "previous" : "nl-NL"
            },
            "CacheControl" : {
                "current" : "max-age=100",
                "previous" : "max-age=99"
            },
            "ContentEncoding" : {
                "current" : "gzip, identity",
                "previous" : "gzip"
            },
            "ContentMD5" : {
                "current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
                "previous" : "Q2h1Y2sgSW="
            },
            "ContentDisposition" : {
                "current" : "attachment",
                "previous" : ""
            },
            "ContentType" : {
                "current" : "application/json",
                "previous" : "application/octet-stream"
            }
        },
        "storageDiagnostics": {
            "bid": "9d726370-8006-0000-00ff-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Schemaversion 4

Följande händelsetyper kan samlas in i ändringsflödesposterna med schemaversion 4:

  • BlobSkapad
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotSkapad
  • BlobTierChanged
  • BlobAsyncOperationInitiated
  • RestorePointMarkerSkapad

I följande exempel visas en ändringshändelsepost i JSON-format som använder händelseschema version 4:

{
    "schemaVersion": 4,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2022-02-17T13:08:42.4835902Z",
    "id": "ca76bce1-8020-0000-00ff-23346706e769",
    "data": {
        "api": "PutBlob",
        "clientRequestId": "58fbfee9-6cf5-4096-9666-c42980beee65",
        "requestId": "ca76bce1-8020-0000-00ff-233467000000",
        "etag": "0x8D9F2169F42D701",
        "contentType": "application/octet-stream",
        "contentLength": 128,
        "blobType": "BlockBlob",
        "blobVersion": "2022-02-17T16:11:52.5901564Z",
        "containerVersion": "0000000000000001",
        "blobTier": "Archive",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "previousInfo": {
            "SoftDeleteSnapshot": "2022-02-17T13:08:42.4825913Z",
            "WasBlobSoftDeleted": "true",
            "BlobVersion": "2024-02-17T16:11:52.0781797Z",
            "LastVersion" : "2022-02-17T16:11:52.0781797Z",
            "PreviousTier": "Hot"
        },
        "snapshot": "2022-02-17T16:09:16.7261278Z",
        "blobPropertiesUpdated" : {
            "ContentLanguage" : {
                "current" : "pl-Pl",
                "previous" : "nl-NL"
            },
            "CacheControl" : {
                "current" : "max-age=100",
                "previous" : "max-age=99"
            },
            "ContentEncoding" : {
                "current" : "gzip, identity",
                "previous" : "gzip"
            },
            "ContentMD5" : {
                "current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
                "previous" : "Q2h1Y2sgSW="
            },
            "ContentDisposition" : {
                "current" : "attachment",
                "previous" : ""
            },
            "ContentType" : {
                "current" : "application/json",
                "previous" : "application/octet-stream"
            }
        },
        "asyncOperationInfo": {
            "DestinationTier": "Hot",
            "WasAsyncOperation": "true",
            "CopyId": "copyId"
        },
        "storageDiagnostics": {
            "bid": "9d72687f-8006-0000-00ff-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Schemaversion 5

Följande händelsetyper kan samlas in i ändringsflödesposterna med schemaversion 5:

  • BlobSkapad
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotSkapad
  • BlobTierChanged
  • BlobAsyncOperationInitiated

I följande exempel visas en ändringshändelsepost i JSON-format som använder händelseschema version 5:

{
    "schemaVersion": 5,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2022-02-17T13:12:11.5746587Z",
    "id": "62616073-8020-0000-00ff-233467060cc0",
    "data": {
        "api": "PutBlob",
        "clientRequestId": "b3f9b39a-ae5a-45ac-afad-95ac9e9f2791",
        "requestId": "62616073-8020-0000-00ff-233467000000",
        "etag": "0x8D9F2171BE32588",
        "contentType": "application/octet-stream",
        "contentLength": 128,
        "blobType": "BlockBlob",
        "blobVersion": "2022-02-17T16:11:52.5901564Z",
        "containerVersion": "0000000000000001",
        "blobTier": "Archive",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "previousInfo": {
            "SoftDeleteSnapshot": "2022-02-17T13:12:11.5726507Z",
            "WasBlobSoftDeleted": "true",
            "BlobVersion": "2024-02-17T16:11:52.0781797Z",
            "LastVersion" : "2022-02-17T16:11:52.0781797Z",
            "PreviousTier": "Hot"
        },
        "snapshot" : "2022-02-17T16:09:16.7261278Z",
        "blobPropertiesUpdated" : {
            "ContentLanguage" : {
                "current" : "pl-Pl",
                "previous" : "nl-NL"
            },
            "CacheControl" : {
                "current" : "max-age=100",
                "previous" : "max-age=99"
            },
            "ContentEncoding" : {
                "current" : "gzip, identity",
                "previous" : "gzip"
            },
            "ContentMD5" : {
                "current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
                "previous" : "Q2h1Y2sgSW="
            },
            "ContentDisposition" : {
                "current" : "attachment",
                "previous" : ""
            },
            "ContentType" : {
                "current" : "application/json",
                "previous" : "application/octet-stream"
            }
        },
        "asyncOperationInfo": {
            "DestinationTier": "Hot",
            "WasAsyncOperation": "true",
            "CopyId": "copyId"
        },
        "blobTagsUpdated": {
            "previous": {
                "Tag1": "Value1_3",
                "Tag2": "Value2_3"
            },
            "current": {
                "Tag1": "Value1_4",
                "Tag2": "Value2_4"
            }
        },
        "restorePointMarker": {
            "rpi": "cbd73e3d-f650-4700-b90c-2f067bce639c",
            "rpp": "cbd73e3d-f650-4700-b90c-2f067bce639c",
            "rpl": "test-restore-label",
            "rpt": "2022-02-17T13:56:09.3559772Z"
        },
        "storageDiagnostics": {
            "bid": "9d726db1-8006-0000-00ff-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Specifikationer

  • Ändringshändelser läggs bara till i ändringsflödet. När dessa poster läggs till är de oföränderliga och postpositionen är stabil. Klientprogram kan underhålla sin egen kontrollpunkt på läspositionen för ändringsflödet.

  • Ändringshändelseposter läggs till inom några minuter efter ändringen. Klientprogram kan välja att använda poster när de läggs till för direktuppspelningsåtkomst eller i grupp vid någon annan tidpunkt.

  • Ändringshändelseposter sorteras efter ändringsordning per blob. Ordningen på ändringar mellan blobar är odefinierad i Azure Blob Storage. Alla ändringar i ett tidigare segment sker före ändringar i efterföljande segment.

  • Ändringshändelseposter serialiseras i loggfilen med hjälp av apache Avro 1.8.2-formatspecifikationen .

  • Ändra händelseposter där eventType har värdet Control är interna systemposter och återspeglar inte en ändring av objekt i ditt konto. Du kan ignorera dessa poster på ett säkert sätt.

  • Värdena i egenskapspåsen storageDiagnostics är endast avsedda för internt bruk och är inte avsedda för användning av ditt program. Dina program bör inte ha ett avtalsberoende av dessa data. Du kan ignorera dessa egenskaper på ett säkert sätt.

  • Den tid som representeras av segmentet är ungefärlig med gränser på 15 minuter. Så för att säkerställa förbrukningen av alla poster inom en angiven tid använder du segmentet föregående och nästa timme.

  • Varje segment kan ha olika antal på grund av chunkFilePaths intern partitionering av loggströmmen för att hantera publiceringsdataflödet. Loggfilerna i var och en chunkFilePath kommer garanterat att innehålla ömsesidigt uteslutande blobar och kan användas och bearbetas parallellt utan att ändra ordningen per blob under iterationen.

  • Segmenten börjar i Publishing status. När posterna i segmentet har slutförts blir Finalizeddet . Loggfiler i ett segment som är daterat efter datumet för LastConsumable egenskapen i $blobchangefeed/meta/Segments.json filen ska inte användas av ditt program. Här är ett exempel på LastConsumableegenskapen i en $blobchangefeed/meta/Segments.json fil:

{
    "version": 0,
    "lastConsumable": "2019-02-23T01:10:00.000Z",
    "storageDiagnostics": {
        "version": 0,
        "lastModifiedTime": "2019-02-23T02:24:00.556Z",
        "data": {
            "aid": "55e551e3-8006-0000-00da-ca346706bfe4",
            "lfz": "2019-02-22T19:10:00.000Z"
        }
    }
}

Villkor och kända problem

I det här avsnittet beskrivs kända problem och villkor i den aktuella versionen av ändringsflödet.

  • Egenskapen url för loggfilen är för närvarande alltid tom.
  • Egenskapen LastConsumable för filen segments.json visar inte det allra första segment som ändringsflödet slutför. Det här problemet uppstår först när det första segmentet har slutförts. Alla efterföljande segment efter den första timmen registreras korrekt i LastConsumable egenskapen .
  • Du kan för närvarande inte se $blobchangefeed containern när du anropar ListContainers-API:et. Du kan visa innehållet genom att anropa ListBlobs API på $blobchangefeed containern direkt.
  • Redundansväxling av lagringskonto stöds inte på konton med ändringsflödet aktiverat. Inaktivera ändringsflödet innan du påbörjar en redundansväxling.
  • Lagringskonton som tidigare har initierat en redundansväxling av ett konto kan ha problem med att loggfilen inte visas. Eventuella framtida redundansväxlingar kan också påverka loggfilen.

Funktionsstöd

Stöd för den här funktionen kan påverkas genom att aktivera Data Lake Storage Gen2, NFS 3.0-protokoll (Network File System) eller SFTP (SSH File Transfer Protocol).

Om du har aktiverat någon av dessa funktioner kan du läsa Stöd för Blob Storage-funktioner i Azure Storage-konton för att utvärdera stödet för den här funktionen.

Vanliga frågor

Vad är skillnaden mellan ändringsflödet och Storage Analytics loggning?

Analysloggar har poster för alla läs-, skriv-, list- och borttagningsåtgärder med lyckade och misslyckade begäranden för alla åtgärder. Analysloggar är bäst och ingen beställning garanteras.

Ändringsflödet är en lösning som tillhandahåller transaktionslogg för lyckade mutationer eller ändringar i ditt konto, till exempel skapande av blobar, ändringar och borttagningar. Ändringsflödet garanterar att alla händelser registreras och visas i ordningen för lyckade ändringar per blob, vilket innebär att du inte behöver filtrera bort brus från en stor mängd läsåtgärder eller misslyckade begäranden. Ändringsflödet är i grunden utformat och optimerat för programutveckling som kräver vissa garantier.

Ska jag använda ändringsflödet eller lagringshändelserna?

Du kan använda båda funktionerna som ändringsflöde och Blob Storage-händelser ger samma information med samma leveranstillförlitlighetsgaranti, där den största skillnaden är svarstid, beställning och lagring av händelseposter. Ändringsflödet publicerar poster i loggen inom några minuter efter ändringen och garanterar även ordningen på ändringsåtgärder per blob. Lagringshändelser skickas i realtid och kanske inte sorteras. Ändringsflödeshändelser lagras korrekt i ditt lagringskonto som skrivskyddade stabila loggar med din egen definierade kvarhållning, medan lagringshändelser är tillfälliga att använda av händelsehanteraren om du inte uttryckligen lagrar dem. Med ändringsflöde kan valfritt antal av dina program använda loggarna på egen hand med hjälp av blob-API:er eller SDK:er.

Nästa steg