Delen via


Zelfstudie: Een maximaal beschikbare toepassing bouwen met Blob Storage

Deze zelfstudie is deel één van een serie. In deze zelfstudie leert u hoe u uw toepassingsgegevens maximaal beschikbaar maakt in Azure.

Wanneer u deze zelfstudie hebt voltooid, hebt u een consoletoepassing waarmee een blob wordt geüpload en opgehaald uit een geografisch zone-redundant (RA-GZRS)-opslagaccount met leestoegang.

Met geo-redundantie in Azure Storage worden transacties asynchroon gerepliceerd van een primaire regio naar een secundaire regio die zich op honderden kilometers afstand bevindt. Dit replicatieproces zorgt ervoor dat de gegevens in de secundaire regio uiteindelijk consistent zijn. De consoletoepassing gebruikt het circuitonderbrekerpatroon om te bepalen met welk eindpunt er verbinding moet worden gemaakt, waarbij er automatisch wordt overgeschakeld tussen eindpunten terwijl er fouten en herstelbewerkingen worden gesimuleerd.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

In deel 1 van de reeks leert u het volgende:

  • Een opslagaccount maken
  • De verbindingsreeks instellen
  • De consoletoepassing uitvoeren

Vereisten

Vereisten om deze zelfstudie te voltooien:

Meld u aan bij Azure Portal

Meld u aan bij de Azure-portal.

Een opslagaccount maken

Een opslagaccount biedt een unieke naamruimte voor het opslaan en openen van uw Azure Storage-gegevensobjecten.

Volg deze stappen om een account voor geografisch zone-redundante (RA-GZRS) opslag met leestoegang te maken:

  1. Selecteer de knop Een resource maken in Azure Portal.

  2. Selecteer Opslagaccount: blob, bestand, tabel, wachtrij op de pagina Nieuw.

  3. Vul het formulier voor het opslagaccount in met de informatie uit de volgende afbeelding en selecteer Maken:

    Instelling Voorbeeldwaarde Beschrijving
    Abonnement Mijn abonnement Zie Abonnementen voor meer informatie over uw abonnementen.
    ResourceGroup myResourceGroup Zie Naming conventions (Naamgevingsconventies) voor geldige namen van resourcegroepen.
    Naam mystorageaccount Een unieke naam in voor uw opslagaccount.
    Location VS - oost Kies een locatie.
    Prestaties Standaard Prestaties van het type Standard zijn een goede optie voor het voorbeeldscenario.
    Soort account StorageV2 Het gebruik van een v2-opslagaccount voor algemeen gebruik wordt aanbevolen. Zie Overzicht van opslagaccounts voor meer informatie over typen Azure-opslagaccounts.
    Replicatie Leestoegang tot geografische zone-redundante opslag (RA-GZRS) De primaire regio is zone-redundant en wordt gerepliceerd naar een secundaire regio, waarbij leestoegang tot de secundaire regio is ingeschakeld.
    Toegangslaag Dynamisch Gebruik de dynamische laag voor veelgebruikte gegevens.

    create storage account

Het voorbeeld downloaden

Download het voorbeeldproject, pak het bestand storage-dotnet-circuit-breaker-pattern-ha-apps-using-ra-grs.zip uit en navigeer vervolgens naar de map v12 om de projectbestanden te vinden.

U kunt git ook gebruiken om de opslagplaats te klonen naar uw lokale ontwikkelomgeving. Het voorbeeldproject in de map v12 bevat een consoletoepassing.

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

Het voorbeeld configureren

Toepassingsaanvragen voor Azure Blob Storage moeten worden geautoriseerd. Het gebruik van de DefaultAzureCredential klasse die door de Azure.Identity clientbibliotheek wordt geleverd, is de aanbevolen methode voor het maken van verbinding met Azure-services in uw code. In het .NET v12-codevoorbeeld wordt deze methode gebruikt. Zie het overzicht defaultAzureCredential voor meer informatie.

U kunt aanvragen voor Azure Blob Storage ook autoriseren met behulp van de toegangssleutel voor het account. Deze aanpak moet echter voorzichtig worden gebruikt om toegangssleutels te beschermen tegen blootstelling.

De consoletoepassing uitvoeren

Druk in Visual Studio op F5 of selecteer Start om foutopsporing van de toepassing te starten. Visual Studio herstelt automatisch ontbrekende NuGet-pakketten als pakketherstel is geconfigureerd. Zie Pakketten installeren en opnieuw installeren met pakketherstel voor meer informatie.

Wanneer het consolevenster wordt gestart, krijgt de app de status van de secundaire regio en schrijft deze informatie naar de console. Vervolgens maakt de app een container in het opslagaccount en uploadt een blob naar de container. Zodra de blob is geüpload, controleert de app continu of de blob is gerepliceerd naar de secundaire regio. Deze controle gaat door totdat de blob wordt gerepliceerd of we bereiken het maximum aantal iteraties zoals gedefinieerd door de lusvoorwaarden.

Vervolgens voert de toepassing een lus in met een prompt om de blob te downloaden, die in eerste instantie wordt gelezen vanuit de primaire opslag. Druk op een willekeurige toets om de blob te downloaden. Als er een fout optreedt die opnieuw kan worden geprobeerd vanuit de primaire regio, wordt een nieuwe poging van de leesaanvraag uitgevoerd op het eindpunt van de secundaire regio. De console-uitvoer wordt weergegeven wanneer de regio overschakelt naar secundair.

Screenshot of Console output for secondary request.

Als u de lus wilt afsluiten en resources wilt opschonen, drukt u op de Esc toets bij de downloadprompt van de blob.

De voorbeeldcode begrijpen

In het voorbeeld wordt een BlobServiceClient object gemaakt dat is geconfigureerd met opties voor opnieuw proberen en een secundair regio-eindpunt. Met deze configuratie kan de toepassing automatisch overschakelen naar de secundaire regio als de aanvraag mislukt op het eindpunt van de primaire regio.

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);

Wanneer de GeoRedundantSecondaryUri eigenschap is ingesteld BlobClientOptions, schakelen nieuwe pogingen voor GET- of HEAD-aanvragen over naar het secundaire eindpunt. Volgende nieuwe pogingen wisselen af tussen het primaire en secundaire eindpunt. Als de status van het antwoord van de secundaire URI echter 404 is, worden volgende nieuwe pogingen voor de aanvraag niet langer gebruikt voor de secundaire URI, omdat deze foutcode aangeeft dat de resource niet is gerepliceerd naar de secundaire regio.

Volgende stappen

In deel een van de reeks hebt u geleerd hoe u een toepassing maximaal beschikbaar maakt met RA-GZRS-opslagaccounts.

Ga naar deel twee van de serie voor informatie over hoe u een fout simuleert en uw toepassing dwingt om het secundaire RA-GZRS-eindpunt te gebruiken.

Resources

Zie de volgende bronnen voor gerelateerde codevoorbeelden met afgeschafte SDK's: