Kurz: Vytvoření vysoce dostupné aplikace s úložištěm objektů blob

Tento kurz je první částí série. V něm se dozvíte, jak zajistit vysokou dostupnost dat aplikací v Azure.

Po dokončení tohoto kurzu budete mít konzolovou aplikaci, která nahraje a načte objekt blob z účtu úložiště ra-GZRS (geograficky redundantní geograficky redundantní zónou jen pro čtení).

Geografická redundance ve službě Azure Storage replikuje transakce asynchronně z primární oblasti do sekundární oblasti, která je vzdálená stovky kilometrů. Tento proces replikace zaručuje, že data v sekundární oblasti jsou nakonec konzistentní. Konzolová aplikace používá model jističe k určení koncového bodu, ke kterému se má připojit, a automaticky přepíná mezi koncovými body při selhání a obnovení se simulují.

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

V první části této série se naučíte:

  • Vytvoření účtu úložiště
  • Nastavit připojovací řetězec
  • Spustit konzolovou aplikaci

Požadavky

Pro absolvování tohoto kurzu potřebujete:

Přihlaste se k portálu Azure Portal.

Přihlaste se k portálu Azure.

Vytvoření účtu úložiště

Účet úložiště poskytuje jedinečný obor názvů pro ukládání datových objektů Azure Storage a přístup k němu.

Při vytváření účtu úložiště RA-GZRS (RA-GZRS) s přístupem pro čtení postupujte takto:

  1. Na webu Azure Portal vyberte tlačítko Vytvořit prostředek.

  2. Vyberte Účet úložiště – objekt blob, soubor, tabulka, fronta z nové stránky.

  3. Vyplňte formulář účtu úložiště následujícími informacemi, jak ukazuje následující obrázek, a vyberte Vytvořit:

    Nastavení Ukázková hodnota Popis
    Předplatné Moje předplatné Podrobnosti o vašich předplatných najdete v tématu Předplatná.
    ResourceGroup myResourceGroup Platné názvy skupin prostředků najdete v tématu Pravidla a omezení pojmenování.
    Název mystorageaccount Jedinečný název vašeho účtu úložiště.
    Místo USA – východ Zvolte umístění.
    Výkon Standard Standardní výkon je dobrou volbou pro ukázkový scénář.
    Druh účtu StorageV2 Doporučujeme použít účet úložiště pro obecné účely verze 2. Další informace o typech účtů úložiště Azure najdete v tématu Přehled účtu úložiště.
    Replikace Geograficky zónově redundantní úložiště s přístupem pro čtení (RA-GZRS) Primární oblast je zónově redundantní a replikuje se do sekundární oblasti s povoleným přístupem pro čtení do sekundární oblasti.
    Úroveň přístupu Horká K často používaným datům použijte horkou úroveň.

    create storage account

Stažení ukázky

Stáhněte si ukázkový projekt, extrahujte (rozbalte) soubor storage-dotnet-circuit-breaker-pattern-ha-apps-using-ra-grs.zip a přejděte do složky v12 a vyhledejte soubory projektu.

Git můžete také použít ke klonování úložiště do místního vývojového prostředí. Ukázkový projekt ve složce v12 obsahuje konzolovou aplikaci.

git clone https://github.com/Azure-Samples/storage-dotnet-circuit-breaker-pattern-ha-apps-using-ra-grs.git

Konfigurace ukázky

Žádosti aplikací do služby Azure Blob Storage musí být autorizované. DefaultAzureCredential Použití třídy poskytované klientskou Azure.Identity knihovnou je doporučeným přístupem pro připojení ke službám Azure ve vašem kódu. Tento přístup používá ukázka kódu .NET v12. Další informace najdete v přehledu DefaultAzureCredential.

Žádosti o službu Azure Blob Storage můžete také autorizovat pomocí přístupového klíče účtu. Tento přístup by se ale měl používat s opatrností k ochraně přístupových klíčů před zveřejněním.

Spustit konzolovou aplikaci

V sadě Visual Studio stiskněte klávesu F5 nebo vyberte Spustit a spusťte ladění aplikace. Visual Studio automaticky obnoví chybějící balíčky NuGet, pokud je nakonfigurováno obnovení balíčku. Další informace najdete v tématu Instalace a přeinstalace balíčků s obnovením balíčků.

Po spuštění okna konzoly aplikace získá stav sekundární oblasti a zapíše do konzoly informace. Aplikace pak v účtu úložiště vytvoří kontejner a nahraje do kontejneru objekt blob. Po nahrání objektu blob bude aplikace průběžně kontrolovat, jestli se objekt blob replikoval do sekundární oblasti. Tato kontrola pokračuje, dokud se objekt blob nereplikuje, nebo dosáhneme maximálního počtu iterací definovaných podmínkami smyčky.

V dalším kroku aplikace zadá smyčku s výzvou ke stažení objektu blob, který zpočátku čte z primárního úložiště. Stisknutím libovolné klávesy stáhněte objekt blob. Pokud dojde k opakované chybě čtení z primární oblasti, provede se opakování požadavku na čtení vůči koncovému bodu sekundární oblasti. Výstup konzoly se zobrazí, když se oblast přepne na sekundární.

Screenshot of Console output for secondary request.

Pokud chcete ukončit smyčku a vyčistit prostředky, stiskněte klávesu Esc na příkazovém řádku pro stažení objektu blob.

Vysvětlení vzorového kódu

Ukázka vytvoří BlobServiceClient objekt nakonfigurovaný s možnostmi opakování a koncovým bodem sekundární oblasti. Tato konfigurace umožňuje aplikaci automaticky přepnout do sekundární oblasti, pokud požadavek selže na koncovém bodu primární oblasti.

string accountName = "<YOURSTORAGEACCOUNTNAME>";
Uri primaryAccountUri = new Uri($"https://{accountName}.blob.core.windows.net/");
Uri secondaryAccountUri = new Uri($"https://{accountName}-secondary.blob.core.windows.net/");

// Provide the client configuration options for connecting to Azure Blob storage
BlobClientOptions blobClientOptions = new BlobClientOptions()
{
    Retry = {
        // The delay between retry attempts for a fixed approach or the delay
        // on which to base calculations for a backoff-based approach
        Delay = TimeSpan.FromSeconds(2),

        // The maximum number of retry attempts before giving up
        MaxRetries = 5,

        // The approach to use for calculating retry delays
        Mode = RetryMode.Exponential,

        // The maximum permissible delay between retry attempts
        MaxDelay = TimeSpan.FromSeconds(10)
    },

    // Secondary region endpoint
    GeoRedundantSecondaryUri = secondaryAccountUri
};

// Create a BlobServiceClient object using the configuration options above
BlobServiceClient blobServiceClient = new BlobServiceClient(primaryAccountUri, new DefaultAzureCredential(), blobClientOptions);

Pokud je vlastnost nastavena GeoRedundantSecondaryUri v BlobClientOptions, opakování pro požadavky GET nebo HEAD se přepne na použití sekundárního koncového bodu. Další opakování se budou mezi primárním a sekundárním koncovým bodem střídat. Pokud je ale stav odpovědi ze sekundárního identifikátoru URI 404, následné opakování požadavku už nebude používat sekundární identifikátor URI, protože tento kód chyby značí, že se prostředek nereplikoval do sekundární oblasti.

Další kroky

V první části série jste se dozvěděli o tom, jak vytvořit aplikaci s vysoce dostupnými účty úložiště RA-GZRS.

V druhé části série se dozvíte, jak simulovat selhání a vynutit, aby vaše aplikace používala sekundární koncový bod RA-GZRS.

Zdroje informací

Související ukázky kódu s využitím zastaralých sad SDK najdete v následujících zdrojích informací: