Menyebarkan dan menskalakan Orleans aplikasi di Azure
Dalam mulai cepat ini, Anda menyebarkan dan menskalakan Orleans aplikasi perpendek URL di Azure Container Apps. Aplikasi ini memungkinkan pengguna untuk mengirimkan URL lengkap ke aplikasi, yang mengembalikan versi singkat yang dapat mereka bagikan dengan orang lain untuk mengarahkannya ke situs asli. Orleans dan Azure menyediakan fitur skalabilitas yang diperlukan untuk menghosting aplikasi lalu lintas tinggi seperti shortener URL. Orleans juga kompatibel dengan layanan hosting lain yang mendukung .NET.
Di akhir mulai cepat ini, Anda memiliki aplikasi yang dapat diskalakan yang berjalan di Azure untuk menyediakan fungsionalitas pemendek URL. Sepanjang cara Anda belajar untuk:
- Templat CLI Pull dan Azure Developer
- Menyebarkan Orleans aplikasi ke Azure
- Menskalakan aplikasi ke beberapa instans
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Azure Developer CLI
- .NET 8
- Docker
Mendapatkan dan menyebarkan aplikasi sampel
Aplikasi sampel tersedia sebagai templat Azure Developer CLI. Melalui mulai cepat ini; Anda menarik aplikasi templat, menyebarkan templat dan kode sampel ke Azure, mengubah templat untuk mengimplementasikan butir persistensi pilihan Anda, menyebarkan sumber daya yang diperlukan, lalu menyebarkan aplikasi akhir.
Buka terminal di direktori kosong.
Autentikasi ke Azure Developer CLI menggunakan
azd auth login
. Ikuti langkah-langkah yang ditentukan oleh alat untuk mengautentikasi ke CLI menggunakan kredensial Azure pilihan Anda.azd auth login
Dapatkan aplikasi sampel menggunakan templat
orleans-url-shortener
AZD danazd init
perintah .azd init --template orleans-url-shortener
Selama inisialisasi, konfigurasikan nama lingkungan yang unik.
Tip
Nama lingkungan juga akan digunakan sebagai nama grup sumber daya target. Untuk mulai cepat ini, pertimbangkan untuk menggunakan
msdocs-orleans-url-shortener
.Sebarkan akun Azure Cosmos DB for NoSQL menggunakan
azd up
. Templat Bicep juga menyebarkan aplikasi web sampel.azd up
Selama proses provisi, pilih langganan dan lokasi yang Anda inginkan. Tunggu hingga proses provisi dan penyebaran selesai. Prosesnya dapat memakan waktu sekitar lima menit.
Setelah provisi sumber daya Azure Anda selesai, URL ke aplikasi web yang sedang berjalan disertakan dalam output.
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.
Gunakan URL di konsol untuk menavigasi ke aplikasi web Anda di browser.
Di bilah alamat browser, uji
shorten
titik akhir dengan menambahkan jalur URL seperti/shorten?url=https://www.microsoft.com
. Halaman harus memuat ulang dan menyediakan URL baru dengan jalur yang dipersingkat di akhir. Salin URL baru ke clipboard Anda.{ "original": "https://www.microsoft.com", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Tempelkan URL yang dipersingkat ke bilah alamat dan tekan enter. Halaman harus memuat ulang dan mengarahkan Anda ke URL yang Anda tentukan.
Menyebarkan layanan tambahan
Penyebaran asli hanya menyebarkan layanan minimal yang diperlukan untuk menghosting aplikasi shortener URL. Untuk menggunakan layanan data Azure untuk persistensi grain, Anda harus terlebih dahulu mengonfigurasi templat untuk menyebarkan layanan pilihan Anda.
Menggunakan terminal, jalankan
azd env set
untuk mengonfigurasiDEPLOY_AZURE_TABLE_STORAGE
variabel lingkungan untuk mengaktifkan penyebaran Azure Cosmos DB untuk NoSQL.azd env set DEPLOY_AZURE_TABLE_STORAGE true
Menggunakan terminal, jalankan
azd env set
untuk mengonfigurasiDEPLOY_AZURE_COSMOS_DB_NOSQL
variabel lingkungan untuk mengaktifkan penyebaran Azure Cosmos DB untuk NoSQL.azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL true
Jalankan
azd provision
untuk menyebarkan ulang arsitektur aplikasi Anda dengan konfigurasi baru. Tunggu hingga proses provisi selesai. Prosesnya dapat memakan waktu sekitar dua menit.azd provision
Tip
Atau, Anda dapat menjalankan
azd up
lagi yang akan menyediakan arsitektur Anda dan menyebarkan ulang aplikasi Anda.
Instal paket NuGet
Sebelum menggunakan biji-bijian, Anda harus menginstal paket yang sesuai Microsoft.Orleans.Clustering.*
dan Microsoft.Orleans.Persistence.*
NuGet. Layanan ini menggunakan kontrol akses berbasis peran untuk autentikasi tanpa kata sandi, jadi Anda juga harus mengimpor Azure.Identity
paket NuGet.
Ubah direktori kerja Anda saat ini menjadi ./src/web/.
cd ./src/web
Azure.Identity
Impor paket dari NuGet menggunakandotnet add package
.dotnet add package Azure.Identity --version 1.*
Microsoft.Orleans.Clustering.AzureStorage
Impor paket danMicrosoft.Orleans.Persistence.AzureStorage
.Paket NuGet Pengklusteran Microsoft.Orleans.Clustering.AzureStorage
Persistensi Microsoft.Orleans.Persistence.AzureStorage
dotnet add package Microsoft.Orleans.Clustering.AzureStorage --version 8.* dotnet add package Microsoft.Orleans.Persistence.AzureStorage --version 8.*
Azure.Identity
Impor paket dari NuGet menggunakandotnet add package
.dotnet add package Azure.Identity --version 1.*
Microsoft.Orleans.Clustering.Cosmos
Impor paket danMicrosoft.Orleans.Persistence.Cosmos
.Paket NuGet Pengklusteran Microsoft.Orleans.Clustering.Cosmos
Persistensi Microsoft.Orleans.Persistence.Cosmos
dotnet add package Microsoft.Orleans.Clustering.Cosmos --version 8.* dotnet add package Microsoft.Orleans.Persistence.Cosmos --version 8.*
Mengonfigurasi dan menyebarkan ulang aplikasi sampel
Aplikasi sampel saat ini dikonfigurasi untuk membuat kluster localhost dan mempertahankan biji-bijian dalam memori. Saat dihosting di Azure, Orleans dapat dikonfigurasi untuk menggunakan status yang lebih dapat diskalakan dan terpusat menggunakan layanan data di Azure.
Tambahkan instruksi
using
berikut:using Azure.Identity; using Orleans.Configuration;
Temukan dan hapus kode konfigurasi saat ini
builder
di file src/web/Program.cs .builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); });
builder
Ganti konfigurasi dengan contoh di sini, yang mengimplementasikan konsep utama ini:- Pemeriksaan lingkungan bersyarat ditambahkan untuk memastikan aplikasi berjalan dengan benar dalam skenario pengembangan lokal dan yang dihosting Azure.
- Metode ini
UseAzureStorageClustering
mengonfigurasi Orleans kluster untuk menggunakan Azure Table Storage dan mengautentikasi menggunakan DefaultAzureCredential kelas . Configure
Gunakan metode untuk menetapkan ID untuk Orleans kluster.ClusterID
adalah ID unik untuk kluster yang memungkinkan klien dan silo untuk berbicara satu sama lain.ClusterID
dapat berubah di seluruh penyebaran.ServiceID
adalah ID unik untuk aplikasi yang digunakan secara internal oleh Orleans dan harus tetap konsisten di seluruh penyebaran.
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"; }); }); }
builder
Ganti konfigurasi dengan contoh di sini, yang mengimplementasikan konsep utama ini:- Pemeriksaan lingkungan bersyarat ditambahkan untuk memastikan aplikasi berjalan dengan benar dalam skenario pengembangan lokal dan yang dihosting Azure.
- Metode ini
UseCosmosClustering
mengonfigurasi Orleans kluster untuk menggunakan Azure Cosmos DB untuk NoSQL dan mengautentikasi menggunakan DefaultAzureCredential kelas . Configure
Gunakan metode untuk menetapkan ID untuk Orleans kluster.ClusterID
adalah ID unik untuk kluster yang memungkinkan klien dan silo untuk berbicara satu sama lain.ClusterID
dapat berubah di seluruh penyebaran.ServiceID
adalah ID unik untuk aplikasi yang digunakan secara internal oleh Orleans dan harus tetap konsisten di seluruh penyebaran.
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"; }); }); }
Jalankan
azd deploy
untuk menyebarkan ulang kode aplikasi Anda sebagai kontainer Docker. Tunggu hingga proses penyebaran selesai. Prosesnya dapat memakan waktu sekitar satu menit.azd deploy
Tip
Atau, Anda dapat menjalankan
azd up
lagi yang akan menyediakan arsitektur Anda dan menyebarkan ulang aplikasi Anda.
Memverifikasi perilaku aplikasi
Validasi bahwa kode yang diperbarui berfungsi dengan menggunakan aplikasi yang disebarkan lagi dan memeriksa untuk melihat di mana kode tersebut menyimpan data.
Di bilah alamat browser, uji
shorten
titik akhir lagi dengan menambahkan jalur URL seperti/shorten?url=https://learn.microsoft.com/dotnet/orleans
. Halaman harus memuat ulang dan menyediakan URL baru dengan jalur yang dipersingkat di akhir. Salin URL baru ke clipboard Anda.{ "original": "https://learn.microsoft.com/dotnet/orleans", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Tempelkan URL yang dipersingkat ke bilah alamat dan tekan enter. Halaman harus memuat ulang dan mengarahkan Anda ke URL yang Anda tentukan.
Secara opsional, Anda dapat memverifikasi bahwa kluster dan data status disimpan seperti yang diharapkan di akun penyimpanan yang Anda buat.
Di portal Azure, navigasikan ke grup sumber daya yang disebarkan dalam mulai cepat ini.
Penting
Nama lingkungan yang ditentukan sebelumnya dalam mulai cepat ini juga merupakan nama grup sumber daya target.
Navigasikan ke halaman gambaran umum akun Azure Storage.
Di dalam navigasi, pilih Browser penyimpanan.
Perluas item navigasi Tabel untuk menemukan dua tabel yang dibuat oleh Orleans:
OrleansGrainState: Tabel ini menyimpan data butir status persisten yang digunakan oleh aplikasi untuk menangani pengalihan URL.
OrleansSiloInstances: Tabel ini melacak data silo penting untuk Orleans kluster.
Pilih tabel OrleansGrainState . Tabel menyimpan entri baris untuk setiap pengalihan URL yang dipertahankan oleh aplikasi selama pengujian Anda.
Navigasi ke halaman gambaran umum akun Azure Cosmos DB for NoSQL.
Di dalam navigasi, pilih Data Explorer.
Amati kontainer berikut yang Anda buat sebelumnya dalam panduan ini:
OrleansStorage: Tabel ini menyimpan data butir status persisten yang digunakan oleh aplikasi untuk menangani pengalihan URL.
OrleansCluster: Tabel ini melacak data silo penting untuk Orleans kluster.
Menskalakan aplikasi
Orleans dirancang untuk aplikasi terdistribusi. Bahkan aplikasi sesingkat pemenci URL dapat memperoleh manfaat dari skalabilitas Orleans. Anda dapat menskalakan dan menguji aplikasi di beberapa instans menggunakan langkah-langkah berikut:
Navigasikan kembali ke grup sumber daya yang disebarkan dalam mulai cepat ini.
Navigasi ke halaman gambaran umum aplikasi Azure Container Apps.
Di dalam navigasi, pilih Skalakan.
Pilih Edit dan sebarkan, lalu beralihlah ke tab Skala .
Gunakan kontrol penggeser untuk mengatur nilai replika min dan maks ke 4. Nilai ini memastikan aplikasi berjalan pada beberapa instans.
Pilih Buat untuk menyebarkan revisi baru.
Setelah penyebaran selesai, ulangi langkah-langkah pengujian dari bagian sebelumnya. Aplikasi terus berfungsi seperti yang diharapkan di beberapa instans dan sekarang dapat menangani jumlah permintaan yang lebih tinggi.