Wdrażanie i skalowanie Orleans aplikacji na platformie Azure
W tym przewodniku Szybki start wdrożysz i przeprowadź skalowanie Orleans aplikacji skracającego adres URL w usłudze Azure Container Apps. Aplikacja umożliwia użytkownikom przesyłanie pełnego adresu URL do aplikacji, co zwraca skróconą wersję, którą mogą udostępnić innym osobom, aby przekierowali je do oryginalnej witryny. Orleans platforma Azure udostępnia funkcje skalowalności niezbędne do hostowania aplikacji o dużym natężeniu ruchu, takich jak skracacze adresów URL. Orleans jest również zgodny z dowolną inną usługą hostingową, która obsługuje platformę .NET.
Na końcu tego przewodnika Szybki start masz skalowalną aplikację działającą na platformie Azure w celu zapewnienia funkcji skracania adresów URL. Po drodze nauczysz się:
- Szablon interfejsu wiersza polecenia ściągania i interfejsu wiersza polecenia dla deweloperów platformy Azure
- Orleans Wdrażanie aplikacji na platformie Azure
- Skalowanie aplikacji do wielu wystąpień
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Interfejs wiersza polecenia dla deweloperów platformy Azure
- .NET 8
- Docker
Pobieranie i wdrażanie przykładowej aplikacji
Przykładowa aplikacja jest dostępna jako szablon interfejsu wiersza polecenia dla deweloperów platformy Azure. W tym przewodniku Szybki start; Ściągasz aplikację szablonu, wdrażasz szablon i przykładowy kod na platformie Azure, zmieniasz szablon, aby zaimplementować preferowany ziarno trwałości, wdrożyć niezbędne zasoby, a następnie wdrożyć ostateczną aplikację.
Otwórz terminal w pustym katalogu.
Uwierzytelnianie w interfejsie wiersza polecenia dla deweloperów platformy Azure przy użyciu polecenia
azd auth login
. Wykonaj kroki określone przez narzędzie, aby uwierzytelnić się w interfejsie wiersza polecenia przy użyciu preferowanych poświadczeń platformy Azure.azd auth login
Pobierz przykładową aplikację przy użyciu szablonu
orleans-url-shortener
AZD iazd init
polecenia .azd init --template orleans-url-shortener
Podczas inicjowania skonfiguruj unikatową nazwę środowiska.
Napiwek
Nazwa środowiska będzie również używana jako nazwa docelowej grupy zasobów. W tym przewodniku Szybki start rozważ użycie polecenia
msdocs-orleans-url-shortener
.Wdróż konto usługi Azure Cosmos DB for NoSQL przy użyciu polecenia
azd up
. Szablony Bicep wdrażają również przykładową aplikację internetową.azd up
Podczas procesu aprowizacji wybierz subskrypcję i żądaną lokalizację. Poczekaj na ukończenie procesu aprowizacji i wdrażania. Proces może potrwać około pięciu minut.
Po zakończeniu aprowizacji zasobów platformy Azure adres URL uruchomionej aplikacji internetowej zostanie uwzględniony w danych wyjściowych.
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.
Użyj adresu URL w konsoli, aby przejść do aplikacji internetowej w przeglądarce.
Na pasku adresu przeglądarki przetestuj
shorten
punkt końcowy, dodając ścieżkę adresu URL, taką jak/shorten?url=https://www.microsoft.com
. Strona powinna zostać ponownie załadowana i podać nowy adres URL ze skróconą ścieżką na końcu. Skopiuj nowy adres URL do schowka.{ "original": "https://www.microsoft.com", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Wklej skrócony adres URL na pasku adresu i naciśnij Enter. Strona powinna zostać ponownie załadowana i przekierowana do określonego adresu URL.
Wdrażanie dodatkowych usług
Oryginalne wdrożenie wdrożyło tylko minimalne usługi niezbędne do hostowania aplikacji skracającego adres URL. Aby użyć usługi danych platformy Azure na potrzeby trwałości ziarna, należy najpierw skonfigurować szablon w celu wdrożenia preferowanej usługi.
Za pomocą terminalu uruchom polecenie
azd env set
, aby skonfigurować zmiennąDEPLOY_AZURE_TABLE_STORAGE
środowiskową w celu włączenia wdrożenia usługi Azure Cosmos DB for NoSQL.azd env set DEPLOY_AZURE_TABLE_STORAGE true
Za pomocą terminalu uruchom polecenie
azd env set
, aby skonfigurować zmiennąDEPLOY_AZURE_COSMOS_DB_NOSQL
środowiskową w celu włączenia wdrożenia usługi Azure Cosmos DB for NoSQL.azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL true
Uruchom polecenie
azd provision
, aby ponownie wdrożyć architekturę aplikacji przy użyciu nowej konfiguracji. Poczekaj na zakończenie procesu aprowizacji. Proces może potrwać około dwóch minut.azd provision
Napiwek
Alternatywnie możesz uruchomić
azd up
ponownie, co spowoduje aprowizację architektury i ponowne wdrożenie aplikacji.
Instalowanie pakietów NuGet
Przed użyciem ziarna należy zainstalować odpowiednie Microsoft.Orleans.Clustering.*
i Microsoft.Orleans.Persistence.*
pakiety NuGet. Te usługi korzystają z kontroli dostępu opartej na rolach na potrzeby uwierzytelniania bez hasła, dlatego należy również zaimportować Azure.Identity
pakiet NuGet.
Zmień bieżący katalog roboczy na ./src/web/.
cd ./src/web
Zaimportuj
Azure.Identity
pakiet z pakietu NuGet przy użyciu poleceniadotnet add package
.dotnet add package Azure.Identity --version 1.*
Zaimportuj
Microsoft.Orleans.Clustering.AzureStorage
pakiety iMicrosoft.Orleans.Persistence.AzureStorage
.Pakiet NuGet Klastrowanie Microsoft.Orleans.Clustering.AzureStorage
Trwałość Microsoft.Orleans.Persistence.AzureStorage
dotnet add package Microsoft.Orleans.Clustering.AzureStorage --version 8.* dotnet add package Microsoft.Orleans.Persistence.AzureStorage --version 8.*
Zaimportuj
Azure.Identity
pakiet z pakietu NuGet przy użyciu poleceniadotnet add package
.dotnet add package Azure.Identity --version 1.*
Zaimportuj
Microsoft.Orleans.Clustering.Cosmos
pakiety iMicrosoft.Orleans.Persistence.Cosmos
.Pakiet NuGet Klastrowanie Microsoft.Orleans.Clustering.Cosmos
Trwałość Microsoft.Orleans.Persistence.Cosmos
dotnet add package Microsoft.Orleans.Clustering.Cosmos --version 8.* dotnet add package Microsoft.Orleans.Persistence.Cosmos --version 8.*
Konfigurowanie i ponowne wdrażanie przykładowej aplikacji
Przykładowa aplikacja jest obecnie skonfigurowana do tworzenia klastra localhost i utrwalania ziarna w pamięci. W przypadku hostowania na platformie Azure Orleans można skonfigurować sposób używania bardziej skalowalnego, scentralizowanego stanu przy użyciu usługi danych na platformie Azure.
Dodaj następujące
using
dyrektywy:using Azure.Identity; using Orleans.Configuration;
Znajdź i usuń bieżący
builder
kod konfiguracji w pliku src/web/Program.cs .builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); });
Zastąp konfigurację
builder
przykładem, który implementuje następujące kluczowe pojęcia:- Dodano kontrolę środowiska warunkowego, aby upewnić się, że aplikacja działa prawidłowo zarówno w scenariuszach programowania lokalnego, jak i hostowanego na platformie Azure.
- Metoda
UseAzureStorageClustering
konfiguruje Orleans klaster tak, aby używał usługi Azure Table Storage i uwierzytelnia się przy użyciu DefaultAzureCredential klasy . Configure
Użyj metody , aby przypisać identyfikatory dla klastraOrleans.- Jest
ClusterID
to unikatowy identyfikator klastra, który umożliwia klientom i silosom rozmowę ze sobą. - Element
ClusterID
może ulec zmianie we wszystkich wdrożeniach. - Jest
ServiceID
to unikatowy identyfikator aplikacji, która jest używana wewnętrznie Orleans i powinna pozostać spójna we wszystkich wdrożeniach.
- Jest
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"; }); }); }
Zastąp konfigurację
builder
przykładem, który implementuje następujące kluczowe pojęcia:- Dodano kontrolę środowiska warunkowego, aby upewnić się, że aplikacja działa prawidłowo zarówno w scenariuszach programowania lokalnego, jak i hostowanego na platformie Azure.
- Metoda
UseCosmosClustering
konfiguruje Orleans klaster tak, aby używał usługi Azure Cosmos DB dla noSQL i uwierzytelnia się przy użyciu DefaultAzureCredential klasy . Configure
Użyj metody , aby przypisać identyfikatory dla klastraOrleans.- Jest
ClusterID
to unikatowy identyfikator klastra, który umożliwia klientom i silosom rozmowę ze sobą. - Element
ClusterID
może ulec zmianie we wszystkich wdrożeniach. - Jest
ServiceID
to unikatowy identyfikator aplikacji, która jest używana wewnętrznie Orleans i powinna pozostać spójna we wszystkich wdrożeniach.
- Jest
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"; }); }); }
Uruchom polecenie
azd deploy
, aby ponownie wdrożyć kod aplikacji jako kontener platformy Docker. Poczekaj na zakończenie procesu wdrażania. Proces może potrwać około minuty.azd deploy
Napiwek
Alternatywnie możesz uruchomić
azd up
ponownie, co spowoduje aprowizację architektury i ponowne wdrożenie aplikacji.
Weryfikowanie zachowania aplikacji
Sprawdź, czy zaktualizowany kod działa ponownie przy użyciu wdrożonej aplikacji i sprawdź, gdzie przechowuje dane.
Na pasku adresu przeglądarki ponownie przetestuj
shorten
punkt końcowy, dodając ścieżkę adresu URL, taką jak/shorten?url=https://learn.microsoft.com/dotnet/orleans
. Strona powinna zostać ponownie załadowana i podać nowy adres URL ze skróconą ścieżką na końcu. Skopiuj nowy adres URL do schowka.{ "original": "https://learn.microsoft.com/dotnet/orleans", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Wklej skrócony adres URL na pasku adresu i naciśnij Enter. Strona powinna zostać ponownie załadowana i przekierowana do określonego adresu URL.
Opcjonalnie możesz sprawdzić, czy dane klastra i stanu są przechowywane zgodnie z oczekiwaniami na utworzonym koncie magazynu.
W witrynie Azure Portal przejdź do grupy zasobów wdrożonej w tym przewodniku Szybki start.
Ważne
Nazwa środowiska określona wcześniej w tym przewodniku Szybki start jest również nazwą docelowej grupy zasobów.
Przejdź do strony przeglądu konta usługi Azure Storage.
W obszarze nawigacji wybierz pozycję Przeglądarka magazynu.
Rozwiń element nawigacji Tabele, aby odnaleźć dwie tabele utworzone przez Orleansprogram :
OrleansGrainState: ta tabela przechowuje trwałe dane ziarna stanu używane przez aplikację do obsługi przekierowań adresów URL.
OrleansSiloInstances: ta tabela śledzi podstawowe dane silosu dla klastra Orleans .
Wybierz tabelę OrleansGrainState . Tabela zawiera wpis wiersza dla każdego przekierowania adresu URL utrwalonego przez aplikację podczas testowania.
Przejdź do strony przeglądu konta usługi Azure Cosmos DB for NoSQL.
W obszarze nawigacji wybierz pozycję Eksplorator danych.
Zapoznaj się z następującymi kontenerami utworzonymi wcześniej w tym przewodniku:
OrleansStorage: ta tabela przechowuje trwałe dane ziarna stanu używane przez aplikację do obsługi przekierowań adresów URL.
OrleansCluster: Ta tabela śledzi podstawowe dane silosu dla klastra Orleans .
Wykonaj skalowanie aplikacji
Orleans jest przeznaczony dla aplikacji rozproszonych. Nawet aplikacja tak prosta, jak skrócenie adresu URL może korzystać ze skalowalności .Orleans Aplikację można skalować i testować w wielu wystąpieniach, wykonując następujące kroki:
Wróć do grupy zasobów wdrożonej w tym przewodniku Szybki start.
Przejdź do strony przeglądu aplikacji Azure Container Apps.
W obszarze nawigacji wybierz pozycję Skaluj.
Wybierz pozycję Edytuj i wdróż, a następnie przejdź do karty Skalowanie .
Użyj kontrolki suwaka, aby ustawić minimalną i maksymalną wartość repliki na 4. Ta wartość gwarantuje, że aplikacja działa w wielu wystąpieniach.
Wybierz pozycję Utwórz , aby wdrożyć nową wersję.
Po zakończeniu wdrażania powtórz kroki testowania z poprzedniej sekcji. Aplikacja nadal działa zgodnie z oczekiwaniami w kilku wystąpieniach i może teraz obsługiwać większą liczbę żądań.