Implementace zásad opakování pomocí .NET
Každá aplikace, která běží v cloudu nebo komunikuje se vzdálenými službami a prostředky, musí být schopná zpracovat přechodné chyby. U těchto aplikací je běžné, že dochází k chybám kvůli momentální ztrátě síťového připojení, vypršení časového limitu požadavku, když je služba nebo prostředek zaneprázdněný, nebo kvůli jiným faktorům. Vývojáři by měli vytvářet aplikace pro transparentní zpracování přechodných chyb za účelem zlepšení stability a odolnosti.
V tomto článku se dozvíte, jak pomocí klientské knihovny Azure Storage pro .NET nastavit zásady opakování pro aplikaci, která se připojuje ke službě Azure Blob Storage. Zásady opakování definují, jak aplikace zpracovává neúspěšné požadavky, a měly by se vždy ladit tak, aby odpovídaly obchodním požadavkům aplikace a povaze selhání.
Konfigurace možností opakování
Zásady opakování pro Blob Storage se konfigurují programově a nabízejí kontrolu nad tím, jak se možnosti opakování použijí pro různé požadavky a scénáře služby. Například webová aplikace, která vydává požadavky na základě interakce uživatele, může implementovat zásadu s menším počtem opakování a kratšími prodlevami, aby se zvýšila rychlost odezvy a upozorňují uživatele, když dojde k chybě. Případně může aplikace nebo komponenta, která spouští dávkové požadavky na pozadí, zvýšit počet opakovaných pokusů a použít exponenciální strategii zpětného odpočtu, která umožní úspěšné dokončení žádosti.
Následující tabulka uvádí vlastnosti třídy RetryOptions spolu s typem, stručným popisem a výchozí hodnotou, pokud neproděláte žádné změny. Měli byste být proaktivní při ladění hodnot těchto vlastností tak, aby vyhovovaly potřebám vaší aplikace.
Vlastnost | Type | Popis | Default value |
---|---|---|---|
Delay | Časový rozsah | Zpoždění mezi opakovanými pokusy o pevný přístup nebo zpožděním, na kterém se mají založit výpočty pro přístup založený na zpětném odpočtu. Pokud služba poskytuje hlavičku odpovědi Opakovat až po, další opakování se zpozdí o dobu trvání určenou hodnotou hlavičky. | 0,8 sekundy |
MaxDelay | Časový rozsah | Maximální přípustné zpoždění mezi opakovanými pokusy, když služba neposkytuje hlavičku odpovědi Opakovat po. Pokud služba poskytuje hlavičku odpovědi Opakovat až po, další opakování se zpozdí o dobu trvání určenou hodnotou hlavičky. | 1 min. |
MaxRetries | int | Maximální počet pokusů o opakování před předáním. | 5 (viz poznámka) |
Režim | RetryMode | Přístup k výpočtu zpoždění opakování. | Exponenciální |
NetworkTimeout | Časový rozsah | Časový limit použitý u jednotlivých síťových operací. | 100 sekund |
Poznámka:
StorageClientOptions
zvětšuje výchozí hodnotu MaxRetries
z 3 na 5. Všechny ostatní vlastnosti mají stejné výchozí hodnoty jako RetryOptions
.
V tomto příkladu kódu pro Blob Storage nakonfigurujeme možnosti opakování ve Retry
vlastnosti Třídy BlobClientOptions . Pak vytvoříme objekt klienta pro službu blob pomocí možností opakování.
// Provide the client configuration options for connecting to Azure Blob Storage
BlobClientOptions blobOptions = new BlobClientOptions()
{
Retry = {
Delay = TimeSpan.FromSeconds(2),
MaxRetries = 5,
Mode = RetryMode.Exponential,
MaxDelay = TimeSpan.FromSeconds(10),
NetworkTimeout = TimeSpan.FromSeconds(100)
},
};
BlobServiceClient blobServiceClient = new BlobServiceClient(
accountUri,
new DefaultAzureCredential(),
blobOptions);
V tomto příkladu každý požadavek služby vydaný z objektu BlobServiceClient
používá možnosti opakování definované v objektu BlobClientOptions
. Pro klienty služeb můžete nakonfigurovat různé strategie opakování na základě potřeb vaší aplikace.
Použití geografické redundance ke zlepšení odolnosti aplikací
Pokud vaše aplikace vyžaduje vysokou dostupnost a vyšší odolnost proti selháním, můžete jako součást zásad opakování využít možnosti geografické redundance služby Azure Storage. Účty úložiště nakonfigurované pro geograficky redundantní replikaci se synchronně replikují v primární oblasti a asynchronně se replikují do sekundární oblasti, která je vzdálená stovky kilometrů.
Azure Storage nabízí dvě možnosti geograficky redundantní replikace: geograficky redundantní úložiště (GRS) a geograficky zónově redundantní úložiště (GZRS). Kromě povolení geografické redundance pro váš účet úložiště musíte také nakonfigurovat přístup pro čtení k datům v sekundární oblasti. Informace o tom, jak změnit možnosti replikace pro účet úložiště, najdete v tématu Změna způsobu replikace účtu úložiště.
V tomto příkladu nastavíme Vlastnost GeoRedundantSecondaryUri v BlobClientOptions
. Pokud je tato vlastnost nastavena, sekundární identifikátor URI se používá pro GET
nebo HEAD
požadavky během opakovaných pokusů. Pokud je stav odpovědi ze sekundárního identifikátoru URI 404, následné opakování požadavku znovu nepoužívejte sekundární identifikátor URI, protože tento stavový kód značí, že se tam prostředek ještě nemusí rozšířit. V opačném případě se následné opakované pokusy mezi primárním a sekundárním identifikátorem URI střídají tam a zpět.
Uri secondaryAccountUri = new Uri($"https://{accountName}-secondary.blob.core.windows.net/");
// Provide the client configuration options for connecting to Azure Blob Storage
BlobClientOptions blobOptionsGRS = new BlobClientOptions()
{
Retry = {
Delay = TimeSpan.FromSeconds(2),
MaxRetries = 5,
Mode = RetryMode.Exponential,
MaxDelay = TimeSpan.FromSeconds(10),
NetworkTimeout = TimeSpan.FromSeconds(100)
},
// Set the secondary storage URI
GeoRedundantSecondaryUri = secondaryAccountUri
};
BlobServiceClient blobServiceClient = new BlobServiceClient(
accountUri,
new DefaultAzureCredential(),
blobOptionsGRS);
Aplikace, které využívají geografickou redundanci, musí mít na paměti některé konkrétní aspekty návrhu. Další informace najdete v tématu Použití geografické redundance k návrhu aplikací s vysokou dostupností.
Další kroky
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro .NET. Podívejte se na úplný seznam článků příručky pro vývojáře na webu Sestavení aplikace.
- Pokyny k architektuře a obecné osvědčené postupy pro zásady opakování najdete v tématu Zpracování přechodných chyb.
- Pokyny k implementaci vzoru opakování pro přechodné selhání najdete v tématu Vzor opakování.