Een app implementeren en schalen Orleans in Azure
In deze quickstart implementeert en schaalt u een Orleans URL-verkorte app in Azure Container Apps. Met de app kunnen gebruikers een volledige URL naar de app verzenden, die een verkorte versie retourneert die ze met anderen kunnen delen om ze naar de oorspronkelijke site te leiden. Orleans en Azure bieden de schaalbaarheidsfuncties die nodig zijn voor het hosten van apps met veel verkeer, zoals URL-verkorters. Orleans is ook compatibel met andere hostingservices die ondersteuning bieden voor .NET.
Aan het einde van deze quickstart hebt u een schaalbare app die wordt uitgevoerd in Azure om de FUNCTIONALITEIT voor URL's korter te maken. Onderweg leert u het volgende:
- CLI-sjabloon voor pull en Azure Developer
- Orleans Een app implementeren in Azure
- De app schalen naar meerdere exemplaren
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
- Azure Developer CLI
- .NET 8
- Docker
De voorbeeldtoepassing ophalen en implementeren
De voorbeeldtoepassing is beschikbaar als een Azure Developer CLI-sjabloon. Via deze quickstart; u de sjabloontoepassing ophaalt, de sjabloon en voorbeeldcode implementeert in Azure, de sjabloon wijzigt om uw voorkeurspersistentiesinterval te implementeren, de benodigde resources te implementeren en vervolgens de uiteindelijke toepassing te implementeren.
Open een terminal in een lege map.
Verifiëren bij de Azure Developer CLI met behulp van
azd auth login
. Volg de stappen die door het hulpprogramma zijn opgegeven om te verifiëren bij de CLI met behulp van uw favoriete Azure-referenties.azd auth login
Haal de voorbeeldtoepassing op met behulp van de AZD-sjabloon
orleans-url-shortener
en deazd init
opdracht.azd init --template orleans-url-shortener
Configureer tijdens de initialisatie een unieke omgevingsnaam.
Tip
De omgevingsnaam wordt ook gebruikt als de naam van de doelresourcegroep. Voor deze quickstart kunt u overwegen .
msdocs-orleans-url-shortener
Implementeer het Azure Cosmos DB for NoSQL-account met behulp van
azd up
. De Bicep-sjablonen implementeren ook een voorbeeldwebtoepassing.azd up
Selecteer tijdens het inrichtingsproces uw abonnement en gewenste locatie. Wacht tot het inrichtings- en implementatieproces is voltooid. Het proces kan ongeveer vijf minuten duren.
Zodra het inrichten van uw Azure-resources is voltooid, wordt er een URL naar de actieve webtoepassing opgenomen in de uitvoer.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
Gebruik de URL in de console om naar uw webtoepassing in de browser te navigeren.
Test het
shorten
eindpunt in de adresbalk van de browser door een URL-pad toe te voegen, zoals/shorten?url=https://www.microsoft.com
. De pagina moet opnieuw worden geladen en een nieuwe URL met een verkort pad aan het einde opgeven. Kopieer de nieuwe URL naar het Klembord.{ "original": "https://www.microsoft.com", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Plak de verkorte URL in de adresbalk en druk op Enter. De pagina moet u opnieuw laden en omleiden naar de URL die u hebt opgegeven.
Extra services implementeren
De oorspronkelijke implementatie heeft alleen de minimale services geïmplementeerd die nodig zijn om de URL korter te hosten. Als u een Azure-gegevensservice wilt gebruiken voor korrelpersistentie, moet u eerst de sjabloon configureren om uw voorkeursservice te implementeren.
Voer de terminal uit
azd env set
om deDEPLOY_AZURE_TABLE_STORAGE
omgevingsvariabele te configureren om de implementatie van Azure Cosmos DB for NoSQL in te schakelen.azd env set DEPLOY_AZURE_TABLE_STORAGE true
Voer de terminal uit
azd env set
om deDEPLOY_AZURE_COSMOS_DB_NOSQL
omgevingsvariabele te configureren om de implementatie van Azure Cosmos DB for NoSQL in te schakelen.azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL true
Voer deze opdracht uit
azd provision
om uw toepassingsarchitectuur opnieuw te implementeren met de nieuwe configuratie. Wacht tot het inrichtingsproces is voltooid. Het proces kan ongeveer twee minuten duren.azd provision
Tip
U kunt ook opnieuw uitvoeren
azd up
om uw architectuur in te richten en uw toepassing opnieuw te implementeren.
NuGet-pakketten installeren
Voordat u het graan gebruikt, moet u de bijbehorende Microsoft.Orleans.Clustering.*
en Microsoft.Orleans.Persistence.*
NuGet-pakketten installeren. Deze services maken gebruik van op rollen gebaseerd toegangsbeheer voor verificatie zonder wachtwoord, dus u moet ook het Azure.Identity
NuGet-pakket importeren.
Wijzig uw huidige werkmap in ./src/web/.
cd ./src/web
Importeer het
Azure.Identity
pakket vanuit NuGet met behulp vandotnet add package
.dotnet add package Azure.Identity --version 1.*
Importeer de
Microsoft.Orleans.Clustering.AzureStorage
enMicrosoft.Orleans.Persistence.AzureStorage
pakketten.NuGet-pakket Clustering Microsoft.Orleans.Clustering.AzureStorage
Volharding Microsoft.Orleans.Persistence.AzureStorage
dotnet add package Microsoft.Orleans.Clustering.AzureStorage --version 8.* dotnet add package Microsoft.Orleans.Persistence.AzureStorage --version 8.*
Importeer het
Azure.Identity
pakket vanuit NuGet met behulp vandotnet add package
.dotnet add package Azure.Identity --version 1.*
Importeer de
Microsoft.Orleans.Clustering.Cosmos
enMicrosoft.Orleans.Persistence.Cosmos
pakketten.NuGet-pakket Clustering Microsoft.Orleans.Clustering.Cosmos
Volharding Microsoft.Orleans.Persistence.Cosmos
dotnet add package Microsoft.Orleans.Clustering.Cosmos --version 8.* dotnet add package Microsoft.Orleans.Persistence.Cosmos --version 8.*
De voorbeeld-app configureren en opnieuw implementeren
De voorbeeld-app is momenteel geconfigureerd om een localhost-cluster te maken en korrels in het geheugen te behouden. Wanneer deze wordt gehost in Azure, Orleans kan worden geconfigureerd voor het gebruik van een schaalbare, gecentraliseerde status met behulp van een gegevensservice in Azure.
Voeg de volgende
using
-instructies toe:using Azure.Identity; using Orleans.Configuration;
Zoek en verwijder de huidige
builder
configuratiecode in het bestand src/web/Program.cs .builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); });
Vervang de
builder
configuratie door het voorbeeld hier, waarmee deze belangrijke concepten worden geïmplementeerd:- Er wordt een voorwaardelijke omgevingscontrole toegevoegd om ervoor te zorgen dat de app goed wordt uitgevoerd in zowel lokale ontwikkeling als gehoste Azure-scenario's.
- De
UseAzureStorageClustering
methode configureert het Orleans cluster voor het gebruik van Azure Table Storage en verifieert met behulp van de DefaultAzureCredential klasse. - Gebruik de
Configure
methode om id's toe te wijzen voor het Orleans cluster.- Het
ClusterID
is een unieke id voor het cluster waarmee clients en silo's met elkaar kunnen communiceren. - De
ClusterID
implementatie kan worden gewijzigd. - Dit
ServiceID
is een unieke id voor de toepassing die intern Orleans wordt gebruikt en moet consistent blijven voor implementaties.
- Het
if (builder.Environment.IsDevelopment()) { builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); }); } else { builder.Host.UseOrleans(siloBuilder => { var endpoint = new Uri(builder.Configuration["AZURE_TABLE_STORAGE_ENDPOINT"]!); var credential = new DefaultAzureCredential(); siloBuilder .UseAzureStorageClustering(options => { options.ConfigureTableServiceClient(endpoint, credential); }) .AddAzureTableGrainStorage(name: "urls", options => { options.ConfigureTableServiceClient(endpoint, credential); }) .Configure<ClusterOptions>(options => { options.ClusterId = "url-shortener"; options.ServiceId = "urls"; }); }); }
Vervang de
builder
configuratie door het voorbeeld hier, waarmee deze belangrijke concepten worden geïmplementeerd:- Er wordt een voorwaardelijke omgevingscontrole toegevoegd om ervoor te zorgen dat de app goed wordt uitgevoerd in zowel lokale ontwikkeling als gehoste Azure-scenario's.
- De
UseCosmosClustering
methode configureert het Orleans cluster voor het gebruik van Azure Cosmos DB voor NoSQL en verifieert het met behulp van de DefaultAzureCredential klasse. - Gebruik de
Configure
methode om id's toe te wijzen voor het Orleans cluster.- Het
ClusterID
is een unieke id voor het cluster waarmee clients en silo's met elkaar kunnen communiceren. - De
ClusterID
implementatie kan worden gewijzigd. - Dit
ServiceID
is een unieke id voor de toepassing die intern Orleans wordt gebruikt en moet consistent blijven voor implementaties.
- Het
if (builder.Environment.IsDevelopment()) { builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); }); } else { builder.Host.UseOrleans(siloBuilder => { var endpoint = builder.Configuration["AZURE_COSMOS_DB_NOSQL_ENDPOINT"]!; var credential = new DefaultAzureCredential(); siloBuilder .UseCosmosClustering(options => { options.ConfigureCosmosClient(endpoint, credential); }) .AddCosmosGrainStorage(name: "urls", options => { options.ConfigureCosmosClient(endpoint, credential); }) .Configure<ClusterOptions>(options => { options.ClusterId = "url-shortener"; options.ServiceId = "urls"; }); }); }
Voer deze
azd deploy
opdracht uit om uw toepassingscode opnieuw te implementeren als een Docker-container. Wacht tot het implementatieproces is voltooid. Het proces kan ongeveer één minuut duren.azd deploy
Tip
U kunt ook opnieuw uitvoeren
azd up
om uw architectuur in te richten en uw toepassing opnieuw te implementeren.
Het gedrag van de app controleren
Controleer of de bijgewerkte code werkt met behulp van de geïmplementeerde toepassing en controleer waar gegevens worden opgeslagen.
Test het
shorten
eindpunt opnieuw in de adresbalk van de browser door een URL-pad toe te voegen, zoals/shorten?url=https://learn.microsoft.com/dotnet/orleans
. De pagina moet opnieuw worden geladen en een nieuwe URL met een verkort pad aan het einde opgeven. Kopieer de nieuwe URL naar het Klembord.{ "original": "https://learn.microsoft.com/dotnet/orleans", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Plak de verkorte URL in de adresbalk en druk op Enter. De pagina moet u opnieuw laden en omleiden naar de URL die u hebt opgegeven.
U kunt eventueel controleren of de cluster- en statusgegevens zijn opgeslagen zoals verwacht in het opslagaccount dat u hebt gemaakt.
Navigeer in Azure Portal naar de resourcegroep die in deze quickstart is geïmplementeerd.
Belangrijk
De omgevingsnaam die eerder in deze quickstart is opgegeven, is ook de naam van de doelresourcegroep.
Navigeer naar de overzichtspagina van het Azure Storage-account.
Selecteer opslagbrowser in de navigatie.
Vouw het navigatie-item Tabellen uit om twee tabellen te detecteren die zijn gemaakt door Orleans:
OrleansGrainState: In deze tabel worden de permanente statuskorrelgegevens opgeslagen die door de toepassing worden gebruikt om de URL-omleidingen af te handelen.
OrleansSiloInstances: In deze tabel worden essentiële silogegevens voor het Orleans cluster bijgehouden.
Selecteer de tabel OrleansGrainState . De tabel bevat een rijvermelding voor elke URL-omleiding die tijdens het testen door de app wordt bewaard.
Navigeer naar de overzichtspagina van het Azure Cosmos DB for NoSQL-account.
Selecteer Data Explorer in de navigatie.
Bekijk de volgende containers die u eerder in deze handleiding hebt gemaakt:
OrleansStorage: In deze tabel worden de permanente statuskorrelgegevens opgeslagen die door de toepassing worden gebruikt om de URL-omleidingen af te handelen.
OrleansCluster: In deze tabel worden essentiële silogegevens voor het Orleans cluster bijgehouden.
De app schalen
Orleans is ontworpen voor gedistribueerde toepassingen. Zelfs een app zo eenvoudig als de URL-verkorter kan profiteren van de schaalbaarheid van Orleans. U kunt uw app schalen en testen in meerdere exemplaren met behulp van de volgende stappen:
Ga terug naar de resourcegroep die in deze quickstart is geïmplementeerd.
Navigeer naar de overzichtspagina van de Azure Container Apps-app.
Selecteer Schalen in de navigatie.
Selecteer Bewerken en implementeren en schakel over naar het tabblad Schaal .
Gebruik het schuifregelaar om de minimum- en maximumreplicawaarden in te stellen op 4. Deze waarde zorgt ervoor dat de app wordt uitgevoerd op meerdere exemplaren.
Selecteer Maken om de nieuwe revisie te implementeren.
Nadat de implementatie is voltooid, herhaalt u de teststappen uit de vorige sectie. De app blijft werken zoals verwacht in verschillende exemplaren en kan nu een hoger aantal aanvragen verwerken.