Partilhar via


Alterar o suporte de feed no Armazenamento de Blobs do Azure

O objetivo do feed de alterações é fornecer logs de transações de todas as alterações que ocorrem nos blobs e nos metadados de blob em sua conta de armazenamento. O feed de alterações fornece um registro ordenado, garantido, durável, imutável e somente leitura dessas alterações. Os aplicativos cliente podem ler esses logs a qualquer momento, seja em streaming ou no modo de lote. Cada alteração gera exatamente uma entrada de log de transações, portanto, você não precisará gerenciar várias entradas de log para a mesma alteração. O feed de alterações permite que você crie soluções eficientes e escaláveis que processam eventos de alteração que ocorrem em sua conta de armazenamento de Blob a um baixo custo.

Para saber como processar registos no feed de alterações, consulte Processar feed de alterações no Armazenamento de Blobs do Azure.

Como funciona o feed de alterações

Os registros de feed de alteração são armazenados como blobs em um contêiner especial em sua conta de armazenamento pelo custo de preço de blob padrão. Você pode controlar o período de retenção desses arquivos com base em seus requisitos (consulte as condições da versão atual). Os eventos de alteração são anexados ao feed de alterações como registros na especificação do formato Apache Avro: um formato compacto, rápido e binário que fornece estruturas de dados ricas com esquema embutido. Esse formato é amplamente usado no ecossistema Hadoop, no Stream Analytics e no Azure Data Factory.

Você pode processar esses logs de forma assíncrona, incremental ou completa. Qualquer número de aplicativos cliente pode ler independentemente o feed de alterações, em paralelo e em seu próprio ritmo. Aplicativos de análise como Apache Drill ou Apache Spark podem consumir logs diretamente como arquivos Avro, o que permite processá-los a um baixo custo, com alta largura de banda e sem ter que escrever um aplicativo personalizado.

O diagrama a seguir mostra como os registros são adicionados ao feed de alterações:

Diagrama mostrando como o feed de alterações funciona para fornecer um log ordenado de alterações em blobs

O suporte ao feed de alterações é adequado para cenários que processam dados com base em objetos que foram alterados. Por exemplo, as aplicações podem:

  • Atualizar um índice secundário, sincronizar com uma cache, mecanismo de pesquisa ou qualquer outro cenário de gestão de conteúdo.
  • Extrair informações e métricas de análise de negócios com base nas alterações que ocorrem nos objetos, seja em lote seja por transmissão em fluxo.
  • Armazenar, auditar e analisar alterações nos objetos, ao longo de qualquer período de tempo, por motivos de segurança, conformidade ou inteligência para a gestão de dados empresariais.
  • Crie soluções para fazer backup, espelhar ou replicar o estado do objeto em sua conta para gerenciamento de desastres ou conformidade.
  • Crie pipelines de aplicativos conectados que reagem a eventos de alteração ou agendam execuções com base no objeto criado ou alterado.

O feed de alterações é um recurso de pré-requisito para replicação de objetos e restauração point-in-time para blobs de bloco.

Nota

O feed de alterações fornece um modelo de log ordenado e durável das alterações que ocorrem em um blob. As alterações são escritas e disponibilizadas no seu registo de feed de alterações numa ordem de alguns minutos após a alteração. Se seu aplicativo tiver que reagir a eventos muito mais rápido do que isso, considere usar eventos de Armazenamento de Blob. Os Eventos de Armazenamento de Blob fornecem eventos únicos em tempo real que permitem que suas Funções ou aplicativos do Azure reajam rapidamente às alterações que ocorrem em um blob.

Ativar e desativar o feed de alterações

Você deve habilitar o feed de alterações em sua conta de armazenamento para começar a capturar e registrar as alterações. Desative o feed de alterações para parar de capturar alterações. Você pode habilitar e desabilitar alterações usando modelos do Azure Resource Manager no Portal ou PowerShell.

Aqui estão algumas coisas que você deve ter em mente ao ativar o feed de alterações.

  • Há apenas um feed de alterações para o serviço de blob em cada conta de armazenamento. Os registros de alimentação de alteração são armazenados no contêiner $blobchangefeed .

  • As alterações Criar, Atualizar e Excluir são capturadas somente no nível de serviço do blob.

  • O feed de alterações captura todas as alterações para todos os eventos disponíveis que ocorrem na conta. Os aplicativos cliente podem filtrar os tipos de eventos conforme necessário. (Veja as condições da versão atual).

  • Somente contas de armazenamento de Blob padrão v2 de uso geral, blob de bloco premium e Blob podem habilitar o feed de alterações. Atualmente, não há suporte para contas com um namespace hierárquico habilitado. Não há suporte para contas de armazenamento v1 de uso geral, mas podem ser atualizadas para v2 de uso geral sem tempo de inatividade, consulte Atualizar para uma conta de armazenamento GPv2 para obter mais informações.

Habilite o feed de alterações em sua conta de armazenamento usando o portal do Azure:

  1. No portal do Azure, selecione sua conta de armazenamento.

  2. Navegue até a opção Proteção de dados em Gerenciamento de dados.

  3. Em Rastreamento, selecione Ativar feed de alteração de blob.

  4. Escolha o botão Salvar para confirmar suas configurações de proteção de dados.

    Captura de ecrã a mostrar como ativar o feed de alterações no portal do Azure

Consumir o feed de mudança

O feed de alterações produz vários metadados e arquivos de log. Esses arquivos estão localizados no contêiner $blobchangefeed da conta de armazenamento. O contêiner $blobchangefeed pode ser exibido por meio do portal do Azure ou do Gerenciador de Armazenamento do Azure.

Seus aplicativos cliente podem consumir o feed de alterações usando a biblioteca do processador de feed de alterações fornecida com o SDK do processador de feed de alterações. Para saber como processar registros no feed de alterações, consulte Processar logs de feed de alterações no Armazenamento de Blobs do Azure.

Alterar segmentos de feed

O feed de alterações é um log de alterações organizadas em segmentos horários, mas anexadas e atualizadas a cada poucos minutos. Esses segmentos são criados somente quando há eventos de alteração de blob que ocorrem nessa hora. Isso permite que seu aplicativo cliente consuma alterações que ocorrem dentro de intervalos de tempo específicos sem ter que pesquisar todo o log. Para saber mais, consulte as especificações.

Um segmento horário disponível do feed de alterações é descrito em um arquivo de manifesto que especifica os caminhos para os arquivos de feed de alterações desse segmento. A listagem do $blobchangefeed/idx/segments/ diretório virtual mostra esses segmentos ordenados por tempo. O caminho do segmento descreve o início do intervalo de tempo horário que o segmento representa. Você pode usar essa lista para filtrar os segmentos de logs que são de seu interesse.

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

Nota

O $blobchangefeed/idx/segments/1601/01/01/0000/meta.json é criado automaticamente quando você ativa o feed de alterações. Você pode ignorar esse arquivo com segurança. É um arquivo de inicialização sempre vazio.

O arquivo de manifesto de segmento (meta.json) mostra o caminho dos arquivos de feed de alteração para esse segmento na chunkFilePaths propriedade. Aqui está um exemplo de um arquivo de manifesto de segmento.

{
    "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"
        }
    }
}

Nota

O $blobchangefeed contêiner aparece somente depois que você ativa o recurso de feed de alterações na sua conta. Você terá que esperar alguns minutos depois de ativar o feed de alterações antes de poder listar os blobs no contêiner.

Alterar registos de eventos

Os arquivos de feed de alterações contêm uma série de registros de eventos de alteração. Cada registro de evento de alteração corresponde a uma alteração em um blob individual. Os registros são serializados e gravados no arquivo usando a especificação de formato Apache Avro . Os registros podem ser lidos usando a especificação de formato de arquivo Avro. Existem várias bibliotecas disponíveis para processar arquivos nesse formato.

Os arquivos de feed de alteração são armazenados no $blobchangefeed/log/ diretório virtual como blobs de acréscimo. O primeiro arquivo de feed de alterações em cada caminho terá 00000 no nome do arquivo (Por exemplo 00000.avro). O nome de cada arquivo de log subsequente adicionado a esse caminho será incrementado em 1 (Por exemplo: 00001.avro).

Esquemas de registro de eventos

Para obter uma descrição de cada propriedade, consulte Esquema de eventos da Grade de Eventos do Azure para Armazenamento de Blob. Os eventos BlobPropertiesUpdated e BlobSnapshotCreated são atualmente exclusivos para alterar feed e ainda não têm suporte para Eventos de Armazenamento de Blob.

Nota

Os arquivos de feed de alteração de um segmento não aparecem imediatamente após a criação de um segmento. A duração do atraso está dentro do intervalo normal de latência de publicação do feed de alterações, que está dentro de alguns minutos da alteração.

Esquema versão 1

Os seguintes tipos de eventos podem ser capturados nos registros de feed de alterações com o esquema versão 1:

  • BlobCriado
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated

O exemplo a seguir mostra um registro de evento de alteração no formato JSON que usa o esquema de eventos versão 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"
        }
    }
}

Esquema versão 3

Os seguintes tipos de eventos podem ser capturados nos registros de feed de alterações com o esquema versão 3:

  • BlobCriado
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated

O exemplo a seguir mostra um registro de evento de alteração no formato JSON que usa o esquema de eventos versão 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"
        }
    }
}

Esquema versão 4

Os seguintes tipos de eventos podem ser capturados nos registros de feed de alterações com o esquema versão 4:

  • BlobCriado
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • BlobAsyncOperationInitiated
  • RestorePointMarkerCreated

O exemplo a seguir mostra um registro de evento de alteração no formato JSON que usa o esquema de eventos versão 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"
        }
    }
}

Esquema versão 5

Os seguintes tipos de eventos podem ser capturados nos registros de feed de alterações com o esquema versão 5:

  • BlobCriado
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • BlobAsyncOperationInitiated

O exemplo a seguir mostra um registro de evento de alteração no formato JSON que usa o esquema de eventos versão 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"
        }
    }
}

Esquema versão 6

Os seguintes tipos de evento podem ser capturados nos registros de feed de alterações com o esquema versão 6:

  • BlobCriado
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • BlobAsyncOperationInitiated

A versão 6 do esquema adiciona suporte para a camada fria.

O exemplo a seguir mostra um registro de evento de alteração no formato JSON que usa o esquema de eventos versão 6:

{
    "schemaVersion": 6,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2023-10-11T13: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": "2023-10-11T16:11:52.5901564Z",
        "containerVersion": "0000000000000001",
        "blobTier": "Archive",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "previousInfo": {
            "SoftDeleteSnapshot": "2023-10-11T13:12:11.5726507Z",
            "WasBlobSoftDeleted": "true",
            "BlobVersion": "2024-02-17T16:11:52.0781797Z",
            "LastVersion" : "2023-10-11T16:11:52.0781797Z",
            "PreviousTier": "Hot"
        },
        "snapshot" : "2023-10-11T16: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": "2023-10-11T13:56:09.3559772Z"
        },
        "storageDiagnostics": {
            "bid": "9d726db1-8006-0000-00ff-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Especificações

  • Os registros de eventos de alteração são anexados apenas ao feed de alterações. Uma vez acrescentados, estes registos são imutáveis e a posição do registo é estável. Os aplicativos cliente podem manter seu próprio ponto de verificação na posição de leitura do feed de alterações.

  • Os registros de eventos de alteração são acrescentados em uma ordem de poucos minutos após a alteração. Os aplicativos cliente podem optar por consumir registros à medida que são anexados para acesso de streaming ou em massa em qualquer outro momento.

  • Os registros de eventos de alteração são ordenados por ordem de modificação por blob. A ordem das alterações entre blobs é indefinida no Armazenamento de Blobs do Azure. Todas as alterações num segmento anterior são anteriores a quaisquer alterações nos segmentos subsequentes.

  • Os registros de eventos de alteração são serializados no arquivo de log usando a especificação de formato Apache Avro 1.8.2 .

  • Altere os registos de eventos em que o eventType valor tem um valor de são registos internos do Control sistema e não refletem uma alteração aos objetos na sua conta. Você pode ignorar esses registros com segurança.

  • Os valores no saco storageDiagnostics de propriedades são apenas para uso interno e não foram projetados para uso pelo seu aplicativo. Seus aplicativos não devem ter uma dependência contratual desses dados. Você pode ignorar essas propriedades com segurança.

  • O tempo representado pelo segmento é aproximado com limites de 15 minutos. Portanto, para garantir o consumo de todos os registros dentro de um tempo especificado, consuma o segmento consecutivo da hora anterior e da próxima hora.

  • Cada segmento pode ter um número diferente devido ao particionamento interno do fluxo de log para gerenciar a taxa de transferência de chunkFilePaths publicação. Os arquivos de log em cada chunkFilePath um têm a garantia de conter blobs mutuamente exclusivos e podem ser consumidos e processados em paralelo sem violar a ordem das modificações por blob durante a iteração.

  • Os segmentos começam em Publishing status. Uma vez concluída a anexação dos registos ao segmento, será Finalized. Os arquivos de log em qualquer segmento datado após a LastConsumable data da propriedade no $blobchangefeed/meta/Segments.json arquivo não devem ser consumidos pelo seu aplicativo. Aqui está um exemplo da LastConsumablepropriedade em um $blobchangefeed/meta/Segments.json arquivo:

{
    "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"
        }
    }
}

Condições e problemas conhecidos

Esta seção descreve problemas e condições conhecidos na versão atual do feed de alterações.

  • Se você habilitar as regras de firewall para sua conta de armazenamento, as solicitações de gerenciamento do ciclo de vida para excluir blobs dentro $blobchangefeed contêiner poderão ser bloqueadas. Pode desbloquear estes pedidos ao indicar exceções para serviços Microsoft fidedignos. Para obter mais informações, consulte a seção Exceções em Configurar firewalls e redes virtuais.
  • A LastConsumable propriedade do arquivo segments.json não lista o primeiro segmento que o feed de alterações finaliza. Esse problema ocorre somente depois que o primeiro segmento é finalizado. Todos os segmentos subsequentes após a primeira hora são capturados com precisão na LastConsumable propriedade.
  • No momento, você não pode ver o contêiner $blobchangefeed quando chama a API ListContainers. Você pode exibir o conteúdo chamando a API ListBlobs no contêiner $blobchangefeed diretamente.
  • O failover de conta de armazenamento de contas de armazenamento com redundância geográfica com o feed de alterações habilitado pode resultar em inconsistências entre os logs do feed de alterações e os dados e/ou metadados de blob. Para obter mais informações sobre essas inconsistências, consulte Alterar inconsistências de dados de feed e blob.
  • Você pode ver erros 404 (Não encontrado) e 412 (Falha na pré-condição) relatados nos contêineres $blobchangefeed e $blobchangefeedsys . Pode ignorar com segurança estes erros.
  • Os eventos BlobDeleted não são gerados quando versões de blob ou snapshots são excluídos. Um evento BlobDeleted é adicionado somente quando um blob base (raiz) é excluído.
  • Os registros de eventos são adicionados somente para alterações em blobs resultantes de solicitações ao ponto de extremidade do Serviço de Blob (blob.core.windows.net). As alterações resultantes de solicitações para o ponto de extremidade (dfs.core.windows.net) do Armazenamento Data Lake não são registradas e não aparecerão nos registros do feed de alterações.

Perguntas mais frequentes (FAQ)

Consulte Perguntas frequentes sobre o suporte do feed de alterações.

Suporte de funcionalidades

O suporte para esse recurso pode ser afetado pela habilitação do Data Lake Storage Gen2, do protocolo NFS (Network File System) 3.0 ou do SSH File Transfer Protocol (SFTP). Se você habilitou qualquer um desses recursos, consulte Suporte ao recurso de Armazenamento de Blob nas contas de Armazenamento do Azure para avaliar o suporte para esse recurso.