Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Celem strumienia zmian jest zapewnienie dzienników wszystkich transakcji dotyczących zmian w obiektach blob i ich metadanych na koncie magazynowym. Źródło zmian zapewnia uporządkowane, gwarantowane, trwałe, niezmienne dzienniki tylko do odczytu tych zmian. Aplikacje klienckie mogą w dowolnym momencie odczytywać te dzienniki, zarówno w trybie przesyłania strumieniowego, jak i wsadowym. Każda zmiana generuje dokładnie jeden wpis dziennika transakcji, więc nie trzeba zarządzać wieloma wpisami dziennika dla tej samej zmiany. Kanał informacyjny zmian umożliwia tworzenie wydajnych i skalowalnych rozwiązań, które przetwarzają zdarzenia zmian występujące na koncie usługi Blob Storage przy niskich kosztach.
Aby dowiedzieć się, jak przetwarzać rekordy w kanale informacyjnym zmian, zobacz Zestawienie zmian procesów w usłudze Azure Blob Storage.
Jak działa kanał informacyjny zmian
Rekordy kanału zmian są przechowywane jako obiekty blob w specjalnym kontenerze na koncie magazynu przy standardowych cenach za obiekty blob. Okres przechowywania tych plików można kontrolować na podstawie wymagań (zobacz warunki bieżącej wersji). Zdarzenia zmiany są dołączane do zestawienia zmian jako rekordy w specyfikacji formatu Apache Avro : kompaktowy, szybki format binarny, który zapewnia zaawansowane struktury danych ze schematem wbudowanym. Ten format jest powszechnie używany w ekosystemie hadoop, usłudze Stream Analytics i usłudze Azure Data Factory.
Te dzienniki można przetwarzać asynchronicznie, przyrostowo lub w całości. Dowolna liczba aplikacji klienckich może niezależnie odczytywać zestawienie zmian, równolegle i we własnym tempie. Aplikacje analityczne, takie jak Apache Drill lub Apache Spark , mogą korzystać z dzienników bezpośrednio jako plików Avro, co pozwala przetwarzać je w niskich kosztach, z wysoką przepustowością i bez konieczności pisania aplikacji niestandardowej.
Na poniższym diagramie przedstawiono sposób dodawania rekordów do zestawienia zmian:
Obsługa śledzenia zmian jest odpowiednia dla scenariuszy, które przetwarzają dane na podstawie zmienionych obiektów. Na przykład aplikacje mogą:
- Aktualizowanie indeksu pomocniczego, synchronizowanie z pamięcią podręczną, wyszukiwarką lub innymi scenariuszami zarządzania zawartością.
- Wyodrębnij metryki i szczegółowe informacje analizy biznesowej na podstawie zmian występujących w obiektach, zarówno w trybie przesyłania strumieniowego, jak i wsadowym.
- Przechowywanie, przeprowadzanie inspekcji i analizowanie zmian w obiektach w dowolnym okresie na potrzeby zabezpieczeń, zgodności lub analizy na potrzeby zarządzania danymi przedsiębiorstwa.
- Twórz rozwiązania do tworzenia kopii zapasowych, dublowania lub replikowania stanu obiektu na koncie na potrzeby zarządzania awariami lub zgodności.
- Twórz połączone potoki aplikacji, które reagują na zmiany zdarzeń lub zaplanują wykonywanie na podstawie utworzonego lub zmienionego obiektu.
Zestawienie zmian jest funkcją wymaganą dla replikacji obiektów i przywracania do określonego punktu w czasie dla obiektów blob blokowych.
Uwaga / Notatka
Zestawienie zmian zapewnia trwały, uporządkowany model dziennika zmian występujących w obiekcie blob. Zmiany są zapisywane i udostępniane w dzienniku zmian w ciągu kilku minut od ich wprowadzenia. Jeśli aplikacja musi reagować na zdarzenia znacznie szybciej niż to, rozważ użycie zdarzeń usługi Blob Storage. Zdarzenia usługi Blob Storage zapewniają jednorazowe zdarzenia w czasie rzeczywistym, które umożliwiają usłudze Azure Functions lub aplikacjom szybkie reagowanie na zmiany w obiekcie blob.
Włączanie i wyłączanie zestawienia zmian
Musisz włączyć strumień zmian na koncie storage, aby rozpocząć przechwytywanie i rejestrowanie zmian. Wyłącz strumień zmian, aby zatrzymać przechwytywanie zmian. Zmiany można włączać i wyłączać przy użyciu szablonów usługi Azure Resource Manager w portalu lub programie PowerShell.
Oto kilka rzeczy, o których należy pamiętać, kiedy włączysz kanał zmian.
Na każdym koncie magazynu jest dostępny tylko jeden kanał informacyjny zmian dla usługi blob. Rekordy kanału zmian są przechowywane w kontenerze $blobchangefeed.
Zmiany związane z tworzeniem, aktualizowaniem i usuwaniem są rejestrowane tylko na poziomie usługi blob.
Kanał zmian przechwytuje wszystkie zmiany dla wszystkich dostępnych zdarzeń występujących na koncie. Aplikacje klienckie mogą filtrować typy zdarzeń zgodnie z wymaganiami. (Zobacz warunki bieżącej wersji).
Tylko standardowe konta ogólnego przeznaczenia w wersji 2, konta blokowych obiektów blob w warstwie Premium oraz konta magazynu Blob mogą włączać funkcję zestawienia zmian. Konta z włączoną hierarchiczną przestrzenią nazw nie są obecnie obsługiwane. Konta magazynowe ogólnego przeznaczenia w wersji 1 nie są obsługiwane, ale można je uaktualnić do wersji GPv2 bez przestojów. Proszę zobaczyć Uaktualnianie do konta magazynu GPv2, aby uzyskać więcej informacji.
Domyślnie Change Feed przechowuje dzienniki na czas nieokreślony. Okres przechowywania dzienników zestawienia zmian można skonfigurować pod względem dni, co pozwala określić, jak długo dzienniki są zachowywane przed automatycznym usunięciem. To zachowanie przechowywania można zmodyfikować podczas początkowej konfiguracji zestawienia zmian, a następnie za pomocą opcji Ochrona danych w sekcji Zarządzanie danymi w witrynie Azure Portal.
Aby usunąć wszystkie istniejące dzienniki Change Feed, zaktualizuj okres przechowywania do 1 dnia, a następnie wyłącz funkcję Change Feed.
Korzystając z portalu Azure, włącz kanał informacyjny zmian na koncie magazynu danych.
W portalu Azure wybierz swoje konto magazynowe.
Przejdź do opcji Ochrona danych w obszarze Zarządzanie danymi.
W obszarze Śledzenie wybierz pozycję Włącz kanał zmian blob.
Wybierz przycisk Zapisz , aby potwierdzić ustawienia ochrony danych.
Korzystanie ze zestawienia zmian
Strumień zmian generuje kilka plików metadanych i dzienników. Te pliki znajdują się w kontenerze $blobchangefeed konta magazynowego. Kontener $blobchangefeed można wyświetlić za pośrednictwem witryny Azure Portal lub Eksploratora usługi Azure Storage.
Aplikacje klienckie mogą korzystać ze zestawienia zmian przy użyciu biblioteki procesora zestawienia zmian obiektów blob, która jest dostarczana z zestawem SDK procesora zestawienia zmian. Aby dowiedzieć się, jak przetwarzać rekordy w źródle danych o zmianach, zobacz Przetwarzanie logów źródła zmian w usłudze Azure Blob Storage.
Zmienianie segmentów kanału informacyjnego
Zestawienie zmian to dziennik zmian, które są zorganizowane w godzinowesegmenty, ale dodawane i aktualizowane co kilka minut. Te segmenty są tworzone tylko wtedy, gdy w tej godzinie wystąpią zdarzenia zmian bloba. Dzięki temu aplikacja kliencka może korzystać ze zmian występujących w określonych zakresach czasu bez konieczności przeszukiwania całego dziennika. Aby dowiedzieć się więcej, zobacz Specyfikacje.
Dostępny segment godzinowy zestawienia zmian jest opisany w pliku manifestu, który określa ścieżki do plików zestawienia zmian dla tego segmentu. Lista katalogu wirtualnego $blobchangefeed/idx/segments/ zawiera te segmenty uporządkowane według czasu. Ścieżka segmentu opisuje początek godzinowego zakresu czasu reprezentowanego przez segment. Możesz użyć tej listy, aby odfiltrować segmenty dzienników, które cię interesują.
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
Uwaga / Notatka
Element $blobchangefeed/idx/segments/1601/01/01/0000/meta.json jest tworzony automatycznie, gdy włączysz kanał zmian. Możesz bezpiecznie zignorować ten plik. Jest to zawsze pusty plik inicjowania.
Plik manifestu segmentu (meta.json) przedstawia ścieżkę plików zestawienia zmian w właściwości chunkFilePaths dla tego segmentu. Oto przykład pliku manifestu segmentu.
{
"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"
}
}
}
Uwaga / Notatka
Kontener $blobchangefeed jest wyświetlany dopiero po włączeniu funkcji śledzenia zmian na Twoim koncie. Po włączeniu funkcji zmiany danych, będziesz musiał poczekać kilka minut, zanim będzie można wyświetlić listę obiektów blob w kontenerze.
Zmienianie rekordów zdarzeń
Pliki zestawienia zmian zawierają serię rekordów dotyczących zdarzeń zmiany. Każdy rekord zdarzenia zmiany odpowiada jednej zmianie pojedynczego obiektu blob. Rekordy są serializowane i zapisywane w pliku przy użyciu specyfikacji formatu Apache Avro . Rekordy można odczytywać przy użyciu specyfikacji formatu pliku Avro. Istnieje kilka bibliotek dostępnych do przetwarzania plików w tym formacie.
Pliki zestawienia zmian są przechowywane w katalogu wirtualnym $blobchangefeed/log/ jako uzupełnialne obiekty blob. Pierwszy plik zestawienia zmian w każdej ścieżce będzie miał 00000 nazwę pliku (na przykład 00000.avro). Nazwa każdego kolejnego pliku dziennika dodanego do tej ścieżki zwiększy się o 1 (na przykład: 00001.avro).
Schematy rekordów zdarzeń
Opis każdej właściwości znajduje się w temacie Schemat zdarzeń usługi Azure Event Grid dla usługi Blob Storage. Zdarzenia BlobPropertiesUpdated i BlobSnapshotCreated dotyczą wyłącznie zmiany kanału danych i nie są jeszcze obsługiwane w przypadku zdarzeń związanych z przechowywaniem blobów.
Uwaga / Notatka
Pliki zestawienia zmian dla segmentu nie są natychmiast wyświetlane po utworzeniu segmentu. Długość opóźnienia mieści się w normalnym interwale opóźnienia publikowania zestawienia zmian, który mieści się w ciągu kilku minut od zmiany.
Schemat w wersji 1
Następujące typy zdarzeń mogą być przechwytywane w rekordach dziennika zmian w schemacie w wersji 1:
- Utworzono Blob
- Blob usunięty
- ZaktualizowanoWłaściwościBloba
- Obiekt blobSnapshotTworzenie
W poniższym przykładzie pokazano rekord zdarzenia zmiany w formacie JSON, który używa schematu zdarzeń w wersji 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"
}
}
}
Wersja schematu 3
Następujące typy zdarzeń mogą być przechwytywane w rekordach zestawienia zmian przy użyciu schematu w wersji 3:
- Utworzono Blob
- Blob usunięty
- ZaktualizowanoWłaściwościBloba
- Obiekt blobSnapshotTworzenie
W poniższym przykładzie pokazano rekord zdarzenia zmiany w formacie JSON, który używa schematu zdarzeń w wersji 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"
}
}
}
Schemat w wersji 4
Następujące typy zdarzeń mogą być przechwytywane w rekordach kanału zmian zgodnie z wersją schematu 4:
- Utworzono Blob
- Blob usunięty
- ZaktualizowanoWłaściwościBloba
- Obiekt blobSnapshotTworzenie
- BlobTierChanged
- Zainicjowano operację blobAsyncOperation
- PunktOdniesieniaUtworzony
W poniższym przykładzie przedstawiono rekord zdarzenia zmiany w formacie JSON, który używa schematu zdarzeń w wersji 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"
}
}
}
Wersja schematu 5
Następujące typy zdarzeń mogą być przechwytywane w rekordach zestawienia zmian w schemacie w wersji 5:
- Utworzono Blob
- Blob usunięty
- ZaktualizowanoWłaściwościBloba
- Obiekt blobSnapshotTworzenie
- BlobTierChanged
- Zainicjowano operację blobAsyncOperation
W poniższym przykładzie pokazano rekord zdarzenia zmiany w formacie JSON, który używa schematu zdarzeń w wersji 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"
}
}
}
Schemat w wersji 6
Następujące typy zdarzeń mogą być przechwytywane w rekordach przeglądu zmian według schematu w wersji 6:
- Utworzono Blob
- Blob usunięty
- ZaktualizowanoWłaściwościBloba
- Obiekt blobSnapshotTworzenie
- BlobTierChanged
- Zainicjowano operację blobAsyncOperation
Wersja schematu 6 dodaje obsługę warstwy zimnej.
W poniższym przykładzie pokazano rekord zdarzenia zmiany w formacie JSON, który używa schematu zdarzeń w wersji 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"
}
}
}
Specyfikacje
Rekordy zdarzeń zmiany są dołączane tylko do zestawienia zmian. Po dołączeniu tych rekordów pozostają one niezmienne, a ich pozycja w zapisie jest stabilna. Aplikacje klienckie mogą obsługiwać własny punkt kontrolny w pozycji odczytu zestawienia zmian.
Rekordy zdarzeń dotyczących zmian są dodawane w ciągu kilku minut od dokonania zmiany. Aplikacje klienckie mogą wybrać korzystanie z rekordów na bieżąco, gdy są one dodawane, w celu uzyskania dostępu do przesyłania strumieniowego lub zbiorczo w dowolnym innym momencie.
Rekordy zdarzeń zmiany są uporządkowane według kolejności modyfikacji na każdy blob. Kolejność zmian w obiektach blob jest niezdefiniowana w usłudze Azure Blob Storage. Wszystkie zmiany w poprzednim segmencie są przed zmianami w kolejnych segmentach.
Rekordy zdarzeń zmiany są serializowane w pliku dziennika przy użyciu specyfikacji formatu Apache Avro 1.8.2 .
Zmień rekordy zdarzeń, w których
eventTypema wartośćControl, które są wewnętrznymi rekordami systemowymi i nie odzwierciedlają zmian w obiektach na Twoim koncie. Możesz bezpiecznie zignorować te rekordy.Wartości w torbie
storageDiagnosticswłaściwości są przeznaczone tylko do użytku wewnętrznego i nie są przeznaczone do użytku przez aplikację. Twoje aplikacje nie powinny mieć zależności umownej od tych danych. Możesz bezpiecznie zignorować te właściwości.Czas reprezentowany przez segment jest przybliżony z granicami 15 minut. Dlatego, aby zapewnić przetworzenie wszystkich rekordów w określonym czasie, należy przetwarzać segmenty zarówno poprzedniej, jak i następnej godziny.
Każdy segment może mieć inną liczbę
chunkFilePathsze względu na wewnętrzne partycjonowanie strumienia dziennika w celu zarządzania przepływnością publikowania. Pliki dziennika w każdymchunkFilePathz nich mają gwarancję, że zawierają wzajemnie wykluczające się obiekty blob i mogą być używane i przetwarzane równolegle bez naruszania kolejności modyfikacji na obiekt blob podczas iteracji.Segmenty rozpoczynają się w
Publishingstatusie. Po zakończeniu dołączania rekordów do segmentu, będzie toFinalized. Pliki dziennika w każdym segmencie, które mają datę późniejszą niż data właściwościLastConsumablew pliku$blobchangefeed/meta/Segments.json, nie powinny być używane przez twoją aplikację. Oto przykład właściwościLastConsumablew pliku$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"
}
}
}
Warunki i znane problemy
W tej sekcji opisano znane problemy i warunki w bieżącej wersji zestawienia zmian.
- Jeśli włączysz reguły firewalla dla konta magazynu, żądania związane z zarządzaniem cyklem życia dotyczące usuwania blobów w kontenerze $blobchangefeed mogą zostać zablokowane. Można odblokować te żądania, określając wyjątki dla zaufanych usług firmy Microsoft. Aby uzyskać więcej informacji, zobacz sekcję Wyjątki w temacie Konfigurowanie zapór i sieci wirtualnych.
- Właściwość
LastConsumablepliku segments.json nie zawiera listy pierwszego segmentu, który finalizuje źródło zmian. Ten problem występuje dopiero po sfinalizowaniu pierwszego segmentu. Wszystkie kolejne segmenty po pierwszej godzinie są przechwytywane dokładnie we właściwościLastConsumable. - Obecnie nie można wyświetlić kontenera $blobchangefeed podczas wywoływania interfejsu API ListContainers. Zawartość można wyświetlić, wywołując interfejs API ListBlobs bezpośrednio w kontenerze $blobchangefeed.
- Przełączenie awaryjne kont magazynu z geograficzną nadmiarowością z włączonym kanałem zmian może spowodować niespójności między dziennikami kanału zmian a danymi obiektów BLOB i/lub metadanymi. Aby uzyskać więcej informacji na temat takich niespójności, zapoznaj się z nieciągłościami changelogów i danych blob.
- W kontenerach $blobchangefeed mogą wystąpić błędy 404 (Nie znaleziono) i 412 (Niepowodzenie warunku wstępnego). Te błędy można bezpiecznie zignorować.
- Zdarzenia BlobDeleted nie są generowane, gdy wersje obiektów blob lub migawki są usuwane. Zdarzenie BlobDeleted jest dodawane tylko wtedy, gdy obiekt blob podstawowy (główny) zostanie usunięty.
- Rekordy zdarzeń są dodawane tylko w przypadku zmian w obiektach blob, które wynikają z żądań do punktu końcowego usługi Blob Service (
blob.core.windows.net). Zmiany wynikające z żądań do punktu końcowego usługi Data Lake Storage (dfs.core.windows.net) nie są rejestrowane i nie będą wyświetlane w rekordach zestawienia zmian.
Najczęściej zadawane pytania (FAQ)
Zobacz Często zadawane pytania dotyczące obsługi zestawienia zmian.
Obsługa funkcji
Może to mieć wpływ na obsługę tej funkcji przez włączenie protokołu Data Lake Storage Gen2, sieciowego systemu plików (NFS) 3.0 lub protokołu SSH File Transfer Protocol (SFTP). Jeśli włączono dowolną z tych funkcji, zobacz Obsługa funkcji usługi Blob Storage na kontach usługi Azure Storage, aby ocenić obsługę tej funkcji.