Поделиться через


Поддержка канала изменений в хранилище BLOB Azure

Цель канала изменений — предоставить журналы транзакций всех изменений, происходящих с объектами BLOB и метаданными объектов BLOB в вашей учетной записи хранения. Веб-канал изменений предоставляет упорядоченные, гарантированные, устойчивые, неизменяемые журналы этих изменений только для чтения . Клиентские приложения могут читать эти журналы в любое время либо в потоковой передаче, либо в пакетном режиме. Каждое изменение создает ровно одну запись журнала транзакций, поэтому вам не придется управлять несколькими записями журнала для одного и того же изменения. Канал изменений позволяет создавать эффективные и масштабируемые решения, которые обрабатывают события изменения, происходящие в вашей учетной записи Blob-хранилища по невысокой цене.

Сведения об обработке записей в канале изменений см. в разделе "Обработка канала изменений" в хранилище BLOB-объектов Azure.

Как работает поток изменений

Записи канала изменений хранятся как BLOB-объекты в специальном контейнере в учетной записи хранения по стандартным ценам BLOB. Срок хранения этих файлов можно контролировать на основе ваших требований (см. условия текущего выпуска). События изменений добавляются в канал изменений в виде записей в спецификации формата Apache Avro : компактный, быстрый двоичный формат, предоставляющий расширенные структуры данных с встроенной схемой. Этот формат широко используется в экосистеме Hadoop, Stream Analytics и фабрике данных Azure.

Эти логи можно обрабатывать асинхронно, пошагово или полностью. Любое количество клиентских приложений может независимо считывать канал изменений параллельно и в своём темпе. Аналитические приложения, такие как Apache Drill или Apache Spark , могут использовать журналы непосредственно в виде файлов Avro, что позволяет обрабатывать их с низкой стоимостью, с высокой пропускной способностью и без необходимости писать пользовательское приложение.

На следующей схеме показано, как записи добавляются в канал изменений:

Схема, показывающая, как работает канал изменений для предоставления упорядоченного журнала изменений BLOB-ов

Поддержка канала изменений хорошо подходит для сценариев обработки данных на основе измененных объектов. Примеры операций, которые могут выполнить приложения, приведены ниже.

  • Обновите вторичный индекс, синхронизируйте с кэшем, поисковой системой или другими сценариями управления содержимым.
  • Извлекайте аналитические данные и метрики на основе изменений в ваших объектах, в потоковом или пакетном режиме.
  • Хранение, аудит и анализ изменений объектов в течение любого периода времени для обеспечения безопасности, соответствия требованиям или аналитики для управления корпоративными данными.
  • Создавайте решения для резервного копирования, зеркального отображения или репликации состояния объекта в учетной записи для аварийного управления или соответствия требованиям.
  • Создавайте конвейеры подключенных приложений, реагирующие на изменения событий или расписания выполнения на основе созданного или измененного объекта.

Канал изменений — это необходимый компонент для репликации объектов и восстановления на определенный момент времени для блочных BLOB-объектов.

Замечание

Канал изменений предоставляет устойчивую упорядоченную модель журнала изменений, происходящих в объекте BLOB. Изменения записываются и становятся доступными в журнале изменений в течение нескольких минут после их внесения. Если приложение должен реагировать на события гораздо быстрее, чем это, рекомендуется использовать события хранилища BLOB-объектов . События хранилища BLOB-объектов предоставляют единовременные события в реальном времени, которые позволяют функциям Azure или приложениям быстро реагировать на изменения в blob-объекте.

Включение и отключение потока изменений

Чтобы начать захват и запись изменений, необходимо включить фид изменений на учетной записи хранения. Отключите канал изменений, чтобы прекратить фиксирование изменений. Вы можете включить и отключить изменения с помощью шаблонов Azure Resource Manager на портале или PowerShell.

Вот несколько вещей, которые следует учитывать при включении канала изменений.

  • Существует только один канал обновлений для службы blob-объектов в каждой учетной записи хранения. Записи канала изменений хранятся в контейнере $blobchangefeed .

  • Изменения создания, обновления и удаления фиксируются только на уровне службы объектов Blob.

  • Канал изменений записывает все изменения для всех доступных событий, происходящих в учетной записи. Клиентские приложения могут отфильтровать типы событий по мере необходимости. (См. условия текущего выпуска.

  • Только стандартные учетные записи хранения blob-объектов общего назначения версии 2, блочных BLOB-объектов уровня "Премиум" и учетные записи хранения BLOB-объектов могут включать канал изменений. Учетные записи с включенным иерархическим пространством имен в настоящее время не поддерживаются. Учетные записи хранения общего назначения версии 1 не поддерживаются, но могут быть обновлены до общего назначения версии 2 без простоя, см. дополнительные сведения об обновлении до учетной записи хранения GPv2 .

  • По умолчанию канал изменений сохраняет журналы неограниченно. Срок хранения журналов канала изменений можно настроить в днях, что позволяет задать, сколько времени сохраняются журналы до их автоматического удаления. Это поведение хранения можно изменить либо во время начальной настройки канала изменений, либо с помощью параметра "Защита данных" в разделе "Управление данными" на портале Azure.

  • Чтобы удалить все существующие журналы канала изменений, обновите срок хранения до 1 дня и отключите функцию канала изменений.

Включите веб-канал изменений в учетной записи хранения с помощью портала Azure:

  1. На портале Azure выберите учетную запись хранения.

  2. Перейдите к параметру защиты данных в разделе "Управление данными".

  3. В разделе Отслеживание выберите Включить поток изменений для BLOB-объектов.

  4. Нажмите кнопку "Сохранить ", чтобы подтвердить параметры защиты данных.

    Снимок экрана, показывающий, как включить канал изменений на портале Azure

Использование канала изменений

Поток изменений создает несколько файлов метаданных и журналов. Эти файлы находятся в контейнере $blobchangefeed учетной записи хранения. Контейнер $blobchangefeed можно просматривать с помощью портала Azure или обозревателя службы хранилища Azure.

Клиентские приложения могут использовать канал изменений с помощью библиотеки обработчика канала изменений BLOB-объектов, предоставляемой в SDK обработчика канала изменений. Сведения о том, как обрабатывать записи в канале изменений, см. в статье "Обработка журналов канала изменений" в хранилище BLOB-объектов Azure.

Сегменты канала изменений

Канал изменений — это журнал изменений, которые организованы в часовыесегменты и дополняются, обновляются каждые несколько минут. Эти сегменты создаются только в том случае, если в этом часе происходят события изменения блобов. Это позволяет клиентскому приложению использовать изменения, которые происходят в течение определенных диапазонов времени, не выполняя поиск по всему журналу. Дополнительные сведения см. в спецификациях.

Доступный почасовой сегмент канала изменений описывается в файле манифеста, который указывает пути к файлам канала изменений для этого сегмента. В списке $blobchangefeed/idx/segments/ виртуального каталога отображаются эти сегменты, упорядоченные по времени. Путь участка задает начало часового диапазона времени, который сегмент представляет. Этот список можно использовать для фильтрации сегментов журналов, интересующих вас.

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

Замечание

Автоматически создается $blobchangefeed/idx/segments/1601/01/01/0000/meta.json, когда вы включаете ленту изменений. Этот файл можно безопасно игнорировать. Это всегда пустой файл инициализации.

Файл манифеста сегмента (meta.json) показывает путь к файлам канала изменений для этого сегмента в свойстве chunkFilePaths . Ниже приведен пример файла манифеста сегмента.

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

Замечание

Контейнер $blobchangefeed отображается только после того, как вы включите функцию канала изменений в вашей учетной записи. Вам придется подождать несколько минут после включения журнала изменений, прежде чем вы сможете перечислить объекты в контейнере.

Изменение записей событий

Файлы журнала изменений содержат ряд записей событий изменений. Каждая запись события изменения соответствует одному изменению отдельного блоба. Записи сериализуются и записываются в файл с помощью спецификации формата Apache Avro . Записи можно считывать с помощью спецификации формата файла Avro. Существует несколько библиотек, доступных для обработки файлов в этом формате.

Файлы канала изменений хранятся в виртуальном каталоге $blobchangefeed/log/ в виде добавочных BLOB-объектов. Первый файл канала изменений в каждом пути будет содержать 00000 в имени файла (например 00000.avro). Имя каждого последующего файла журнала, добавленного в этот путь, увеличивается на 1 (например: 00001.avro).

Схемы записей событий

Описание каждого свойства см. в схеме событий Сетки событий Azure для хранилища BLOB-объектов. События BlobPropertiesUpdated и BlobSnapshotCreated в настоящее время являются эксклюзивными для потока изменений и пока не поддерживаются для событий в хранилище BLOB-объектов.

Замечание

Файлы фида изменений для сегмента не сразу отображаются после его создания. Продолжительность задержки находится в пределах обычного интервала публикации канала изменений, что составляет несколько минут после изменения.

Схема версии 1

Следующие типы событий могут быть записаны в записях канала изменений со схемой версии 1:

  • BlobCreated
  • BlobDeleted
  • Обновлены свойства блоба
  • BlobSnapshotCreated

В следующем примере показана запись события изменения в формате JSON, использующая схему событий версии 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"
        }
    }
}

Схема версии 3

Следующие типы событий могут быть записаны в ленте изменений с версией схемы 3:

  • BlobCreated
  • BlobDeleted
  • Обновлены свойства блоба
  • BlobSnapshotCreated

В следующем примере показана запись события изменения в формате JSON, использующая схему событий 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"
        }
    }
}

Схема версии 4

Следующие типы событий могут быть записаны в записях канала изменений с версией схемы 4:

  • BlobCreated
  • BlobDeleted
  • Обновлены свойства блоба
  • BlobSnapshotCreated
  • BlobTierChanged
  • Инициация асинхронной операции Blob
  • МаркерТочкиВосстановленияСоздан

В следующем примере показана запись события изменения в формате JSON, использующая схему событий 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"
        }
    }
}

Схема версии 5

В записях канала изменений со схемой версии 5 могут быть зафиксированы следующие типы событий:

  • BlobCreated
  • BlobDeleted
  • Обновлены свойства блоба
  • BlobSnapshotCreated
  • BlobTierChanged
  • Инициация асинхронной операции Blob

В следующем примере показана запись события изменения в формате JSON, использующая схему событий 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"
        }
    }
}

Схема версии 6

Следующие типы событий могут быть записаны в записях канала изменений с версией схемы 6:

  • BlobCreated
  • BlobDeleted
  • Обновлены свойства блоба
  • BlobSnapshotCreated
  • BlobTierChanged
  • Инициация асинхронной операции Blob

Схема версии 6 добавляет поддержку холодного уровня хранения.

В следующем примере показана запись события изменения в формате JSON, использующая схему событий версии 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"
        }
    }
}

Спецификации

  • Записи событий изменений добавляются только в канал изменений. После добавления этих записей они неизменяемы и позиция записи стабильна. Клиентские приложения могут поддерживать собственную контрольную точку на позиции считывания потока изменений.

  • Записи о событиях изменения добавляются в течение нескольких минут после внесения изменений. Клиентские приложения могут использовать записи по мере их добавления для потокового доступа или массово в любое другое время.

  • Записи событий изменения упорядочены по порядку изменения для каждого блоба. Порядок изменений внутри объектов BLOB не определен в хранилище Blob Azure. Все изменения, сделанные в предыдущем сегменте, происходят до любых изменений в последующих сегментах.

  • Записи событий изменений сериализуются в файл журнала с помощью спецификации формата Apache Avro 1.8.2 .

  • Записи событий, где eventType имеет значение Control, являются внутренними системными записями и не отражают изменения объектов в вашей учетной записи. Эти записи можно безопасно игнорировать.

  • Значения в контейнере storageDiagnostics свойств предназначены только для внутреннего использования и не предназначены для использования приложением. Ваши приложения не должны иметь контрактную зависимость от данных. Эти свойства можно безопасно игнорировать.

  • Время, представленное сегментом, приблизительно с границами 15 минут. Таким образом, чтобы обеспечить потребление всех записей в течение указанного времени, потребляйте последовательный предыдущий и следующий час сегмент.

  • Каждый сегмент может иметь разное количество chunkFilePaths из-за внутреннего секционирования потока журнала для управления пропускной способностью публикации. Файлы журнала в каждом chunkFilePath гарантированно содержат взаимоисключающие бинарные объекты и могут использоваться и обрабатываться параллельно, не нарушая последовательность изменений для каждого бинарного объекта во время итерации.

  • Сегменты начинаются в Publishing состоянии. После завершения добавления записей в сегмент это будет выполнено Finalized. Файлы журналов в любом сегменте, датированном после даты свойства LastConsumable в файле $blobchangefeed/meta/Segments.json, не должны обрабатываться вашим приложением. Ниже приведен пример LastConsumableсвойства в $blobchangefeed/meta/Segments.json файле:

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

Ограничения и известные проблемы

В этом разделе описываются известные проблемы и обстоятельства в текущем выпуске потока изменений.

  • Если вы включите правила брандмауэра для учетной записи хранения, запросы управления жизненным циклом для удаления объектов BLOB в контейнере $blobchangefeed могут быть заблокированы. Их можно разблокировать, предоставив исключения для доверенных служб Майкрософт. Дополнительные сведения см. в разделе " Исключения" в разделе "Настройка брандмауэров и виртуальных сетей".
  • Свойство LastConsumable файла segments.json не отображает самый первый сегмент, который будет завершен каналом изменений. Эта проблема возникает только после завершения первого сегмента. Все последующие сегменты после первого часа точно фиксируются в свойстве LastConsumable .
  • В настоящее время при вызове API ListContainers невозможно увидеть контейнер $blobchangefeed . Содержимое можно просмотреть, вызвав API ListBlobs непосредственно в контейнере $blobchangefeed.
  • Переключение отказа геоизбыточных учетных записей хранения при включенном канале изменений может привести к несоответствию между журналами изменений и данными BLOB-объектов и/или метаданными. Дополнительные сведения о таких несоответствиях см. в разделе "Канал изменений" и "Несоответствия данных BLOB-объектов".
  • В контейнерах $blobchangefeed могут отображаться ошибки 404 (не найдено) и 412 (предварительный сбой). Эти ошибки можно безопасно игнорировать.
  • События BLOBDeleted не создаются при удалении версий или снимков BLOB-объектов. Событие BlobDeleted добавляется только при удалении базового (корневого) BLOB-объекта.
  • Записи событий добавляются только для изменений больших двоичных объектов, которые являются результатом запросов к конечной точке службы больших двоичных объектов (blob.core.windows.net). Изменения, создаваемые запросами к конечной точке Data Lake Storage (dfs.core.windows.net), не регистрируются и не отображаются в записях ленты изменений.

Часто задаваемые вопросы (FAQ)

См. Часто задаваемые вопросы о поддержке канала изменений.

Поддержка функций

На поддержку данной функции может повлиять включение протокола Data Lake Storage 2-го поколения, протокола сетевой файловой системы (NFS) 3.0 или протокола SFTP. Если вы включили любую из этих возможностей, см. Поддержка функций Blob Storage в учетных записях хранения Azure, чтобы оценить поддержку этой функции.