Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten distribuerar och skalar du en URL-förkortare-app på Azure Container Apps. Appen gör det möjligt för användare att skicka en fullständig URL till appen, som returnerar en förkortad version som de kan dela med andra för att dirigera dem till den ursprungliga webbplatsen. Orleans och Azure tillhandahåller de skalbarhetsfunktioner som krävs för att vara värd för appar med hög trafik, till exempel URL-förkortningar. Orleans är också kompatibelt med andra värdtjänster som stöder .NET.
I slutet av den här snabbstarten har du en skalbar app som körs i Azure för att ge url-förkortare funktioner. Längs vägen lär du dig att:
- Cli-mall för Pull och Azure Developer
- Distribuera en Orleans app till Azure
- Skala appen till flera instanser
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- Azure Developer CLI
- .NET 8
- Stuveriarbetare
Hämta och distribuera exempelprogrammet
Exempelprogrammet är tillgängligt som en Azure Developer CLI-mall. I den här snabbstarten: du hämtar mallprogrammet, distribuerar mallen och exempelkoden till Azure, ändrar mallen för att implementera önskat beständighetsintervall, distribuerar nödvändiga resurser och distribuerar sedan det slutliga programmet.
Öppna en terminal i en tom katalog.
Autentisera till Azure Developer CLI med .
azd auth login
Följ stegen som anges av verktyget för att autentisera till CLI med dina önskade Azure-autentiseringsuppgifter.azd auth login
Hämta exempelprogrammet med hjälp av AZD-mallen
orleans-url-shortener
azd init
och kommandot .azd init --template orleans-url-shortener
Under initieringen konfigurerar du ett unikt miljönamn.
Tips
Miljönamnet används också som målresursgruppnamn. För den här snabbstarten bör du överväga att använda
msdocs-orleans-url-shortener
.Distribuera Azure Cosmos DB för NoSQL-konton med hjälp av
azd up
. Bicep-mallarna distribuerar också ett exempel webbprogram.azd up
Under tillhandahållandeprocessen väljer du vilket abonnemang och vilken plats du önskar. Vänta tills etablerings- och distributionsprocessen har slutförts. Processen kan ta ungefär fem minuter.
När etableringen av dina Azure-resurser är klar inkluderas en URL till det webbprogram som körs i utdata.
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.
Använd URL:en i konsolen för att navigera till webbprogrammet i webbläsaren.
I webbläsarens adressfält testar du
shorten
slutpunkten genom att lägga till en URL-sökväg, till exempel/shorten?url=https://www.microsoft.com
. Sidan bör uppdateras och ge en ny URL med en förkortad sökväg i slutet. Kopiera den nya URL:en till Urklipp.{ "original": "https://www.microsoft.com", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Klistra in den förkortade URL:en i adressfältet och tryck på Retur. Sidan bör läsa in och omdirigera dig till den URL som du angav.
Distribuera extra tjänster
Den ursprungliga distributionen distribuerade endast de minimala tjänster som krävs för att vara värd för URL-förkortarappen. Om du vill använda en Azure-datatjänst för kornbeständighet måste du först konfigurera mallen för att distribuera önskad tjänst.
Använd terminalen och kör
azd env set
för att konfigureraDEPLOY_AZURE_TABLE_STORAGE
miljövariabeln för att aktivera distribution av Azure Cosmos DB för NoSQL.azd env set DEPLOY_AZURE_TABLE_STORAGE true
Använd terminalen och kör
azd env set
för att konfigureraDEPLOY_AZURE_COSMOS_DB_NOSQL
miljövariabeln för att aktivera distribution av Azure Cosmos DB för NoSQL.azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL true
Kör
azd provision
för att distribuera om programarkitekturen med den nya konfigurationen. Vänta tills etableringsprocessen har slutförts. Processen kan ta ungefär två minuter.azd provision
Tips
Du kan också köra
azd up
igen, vilket både etablerar arkitekturen och distribuerar om programmet.
Installera NuGet-paket
Innan du använder komponenten måste du installera motsvarande Microsoft.Orleans.Clustering.*
och Microsoft.Orleans.Persistence.*
NuGet-paket. Dessa tjänster använder rollbaserad åtkomstkontroll för lösenordslös autentisering, så du måste även importera Azure.Identity
NuGet-paketet.
Ändra den aktuella arbetskatalogen till ./src/web/.
cd ./src/web
Importera paketet
Azure.Identity
från NuGet:dotnet add package Azure.Identity --version 1.*
Importera paketen
Microsoft.Orleans.Clustering.AzureStorage
ochMicrosoft.Orleans.Persistence.AzureStorage
.Egenskap NuGet-paket Klustring Microsoft.Orleans.Clustering.AzureStorage
Ståndaktighet Microsoft.Orleans.Persistence.AzureStorage
dotnet add package Microsoft.Orleans.Clustering.AzureStorage --version 8.* dotnet add package Microsoft.Orleans.Persistence.AzureStorage --version 8.*
Importera paketet
Azure.Identity
från NuGet:dotnet add package Azure.Identity --version 1.*
Importera paketen
Microsoft.Orleans.Clustering.Cosmos
ochMicrosoft.Orleans.Persistence.Cosmos
.Egenskap NuGet-paket Klustring Microsoft.Orleans.Clustering.Cosmos
Ståndaktighet Microsoft.Orleans.Persistence.Cosmos
dotnet add package Microsoft.Orleans.Clustering.Cosmos --version 8.* dotnet add package Microsoft.Orleans.Persistence.Cosmos --version 8.*
Konfigurera och distribuera om exempelappen
Exempelappen är för närvarande konfigurerad för att skapa ett localhost-kluster och bevara korn i minnet. När du är värd för Azure Orleans kan du konfigurera att använda ett mer skalbart, centraliserat tillstånd med hjälp av en datatjänst i Azure.
Lägg till följande
using
direktiv:using Azure.Identity; using Orleans.Configuration;
Leta upp och ta bort den aktuella
builder
konfigurationskoden i filen src/web/Program.cs .builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); });
Ersätt konfigurationen
builder
med exemplet här, som implementerar följande nyckelbegrepp:- En kontroll av villkorsstyrd miljö läggs till för att säkerställa att appen körs korrekt i både lokala utvecklingsscenarier och Azure-värdbaserade scenarier.
- Metoden
UseAzureStorageClustering
konfigurerar klustret så att det Orleans använder Azure Table Storage och autentiserar med hjälp av DefaultAzureCredential klassen . - Använd metoden
Configure
för att tilldela ID:t för Orleans klustret. -
ClusterID
är ett unikt ID för klustret som gör att klienter och silor kan prata med varandra. -
ClusterID
Kan ändras mellan distributioner. -
ServiceID
är ett unikt ID för programmet som används internt av Orleans och bör förbli konsekvent mellan distributioner.
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"; }); }); }
Ersätt konfigurationen
builder
med exemplet här, som implementerar följande nyckelbegrepp:- En kontroll av villkorsstyrd miljö läggs till för att säkerställa att appen körs korrekt i både lokala utvecklingsscenarier och Azure-värdbaserade scenarier.
- Metoden
UseCosmosClustering
konfigurerar Orleans klustret att använda Azure Cosmos DB för NoSQL och autentiserar med hjälp av DefaultAzureCredential klassen. - Använd metoden
Configure
för att tilldela ID:t för Orleans klustret. -
ClusterID
är ett unikt ID för klustret som gör att klienter och silor kan prata med varandra. -
ClusterID
Kan ändras mellan distributioner. -
ServiceID
är ett unikt ID för programmet som används internt av Orleans och bör förbli konsekvent mellan distributioner.
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"; }); }); }
Kör
azd deploy
för att distribuera om programkoden som en Docker-container. Vänta tills distributionsprocessen har slutförts. Processen kan ta ungefär en minut.azd deploy
Tips
Du kan också köra
azd up
igen, vilket både etablerar arkitekturen och distribuerar om programmet.
Verifiera appens beteende
Kontrollera att den uppdaterade koden fungerar med hjälp av det distribuerade programmet igen och kontrollera var det lagrar data.
I webbläsarens adressfält testar du
shorten
slutpunkten igen genom att lägga till en URL-sökväg, till exempel/shorten?url=https://learn.microsoft.com/dotnet/orleans
. Sidan bör uppdateras och ge en ny URL med en förkortad sökväg i slutet. Kopiera den nya URL:en till Urklipp.{ "original": "https://learn.microsoft.com/dotnet/orleans", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Klistra in den förkortade URL:en i adressfältet och tryck på Retur. Sidan bör läsa in och omdirigera dig till den URL som du angav.
Du kan också kontrollera att klustret och tillståndsdata lagras som förväntat i lagringskontot som du skapade.
I Azure Portal går du till resursgruppen som distribuerades i den här snabbstarten.
Viktigt!
Miljönamnet som angavs tidigare i den här snabbstarten är också namnet på målresursgruppen.
Gå till översiktssidan för Azure Storage-kontot.
I navigeringen väljer du Lagringswebbläsare.
Expandera navigeringsobjektet Tabeller för att identifiera två tabeller som skapats av Orleans:
- OrleansGrainState: Den här tabellen lagrar beständiga tillståndsintervalldata som används av programmet för att hantera URL-omdirigeringarna.
- OrleansSiloInstances: Den här tabellen spårar viktiga silodata för Orleans klustret.
Välj tabellen OrleansGrainState. Tabellen innehåller en radpost för varje URL-omdirigering som sparas av appen under testningen.
Gå till översiktssidan för Azure Cosmos DB för NoSQL-kontot.
I navigeringen väljer du Datautforskaren.
Observera följande containrar som du skapade tidigare i den här guiden:
OrleansStorage: Den här tabellen lagrar beständiga tillståndsintervalldata som används av programmet för att hantera URL-omdirigeringarna.
OrleansCluster: Den här tabellen spårar viktiga silodata för Orleans klustret.
Skala upp appen
Orleans är utformad för distribuerade program. Även en app så enkel som URL-förkortningen kan dra nytta av skalbarheten för Orleans. Du kan skala och testa din app över flera instanser med hjälp av följande steg:
Gå tillbaka till resursgruppen som distribuerades i den här snabbstartsguiden.
Gå till översiktssidan för Azure Container Apps-appen.
I navigeringen väljer du Skala.
Välj Redigera och distribuera och växla sedan till fliken Skala .
Använd skjutreglaget för att ställa in minsta och högsta replikvärden till 4. Det här värdet säkerställer att appen körs på flera instanser.
Välj Skapa för att distribuera den nya revisionen.
När distributionen är klar upprepar du teststegen från föregående avsnitt. Appen fortsätter att fungera som förväntat i flera instanser och kan nu hantera ett högre antal begäranden.