Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Büyük yük desteği, uygulamanızın Dayanıklı Görev Zamanlayıcı ileti boyutu sınırını aşan düzenleme girişlerini ve etkinlik çıkışlarını geçirmesine olanak tanır. Bir yük yapılandırılan eşiği aştığında, çerçeve serileştirilmiş yükü Azure Blob Depolama depolar ve Dayanıklı Görev Zamanlayıcı aracılığıyla küçük bir başvuru gönderir.
Bu özellik şu özellikler için kullanılabilir:
- Dayanıklı İşlevler yalıtılmış .NET çalışanı ile
- .NET Dayanıklı Görev SDK
- Python Dayanıklı Görev SDK
İş akışınız verileri Blob Depolama'da depoluyor ve yalnızca bir URI veya tanımlayıcı geçiriyorsa, bu düzeni kullanmaya devam edin. Orkestrasyon mantığınızın veri yükünü dayanıklı işlemler arasında geçirmesi gerektiğinde büyük veri yükü desteğini kullanın. Genel bilgi için Dayanıklı İşlevler'ta Veri Kalıcılığı ve Serileştirme başlığına bakın.
Desteklenen çerçeveler
Bu tabloda çerçeveye göre büyük yük desteği gösterilmektedir.
| Çerçeve | Destek durumu | Neye ihtiyacınız var? |
|---|---|---|
| Dayanıklı Fonksiyonlar | yalıtılmış .NET C'de desteklenir# | Depolama sağlayıcısı olarak Dayanıklı Görev Zamanlayıcı'yı kullanın ve yük blobları için AzureWebJobsStorage kullanın. |
| Dayanıklı Görev SDK'ları | .NET ve Python desteklenir | Azure Blob Depolama ile dile özgü Azure Blob yükü uzantısını kullanma |
| JavaScript, PowerShell ve Java | Mevcut değil | Harici depolama kullanımı ve kalıcı işlemler arasında referansları aktarma |
Nasıl çalışır?
Büyük yük desteğini etkinleştirdiğinizde, çalışma zamanı her iki barındırma modelinde de aynı üst düzey akışı izler:
- Orkestrasyon girişini veya etkinlik çıkışını serileştirir.
- Yük boyutu yapılandırılan eşiğinizi aşarsa, çalışma zamanı yükü gzip ile sıkıştırır.
- Sıkıştırılmış yükü Azure Blob Depolama'a yazar.
- Tam yük yerine, Dayanıklı Görev Zamanlayıcısı üzerinden bir blob referansı gönderir.
- Çalışma zamanı, orkestratörünüz veya etkinlik kodunuz değeri okumadan önce başvuruyu otomatik olarak çözümler.
Geçerli .NET örnekleri, belirlenimci ve düşük sıkıştırılabilirliğe sahip 1,5 MiB'lik veri yükleri kullanır. Çalışma zamanı gzip içerik kodlaması ile bloblar yazsa da, bu yine de depolanan blob boyutunu doğru bir şekilde temsil eder.
Büyük yük desteği, yüklerin çalışma zamanı boyunca taşınma şeklini değiştirir. Bu, kalıcı durumu mümkün olduğunca küçük tutma önerisini değiştirmez.
Doğru deseni seçin
Senaryonuz için en basit düzeni kullanın.
| Bu deseni kullan | Kullanılması gereken durumlar |
|---|---|
| Büyük yük desteği | Orkestrasyonunuz yükü dayanıklı işlemler arasında geçirir ve yük zamanlayıcı mesaj sınırını aşıyor. |
| Dış depolama ve referanslar | Etkinlikleriniz verileri doğrudan depolama alanından yükler ve mümkün olan en küçük düzenleme durumunu istersiniz |
Büyük yük desteğini etkinleştirme
Dayanıklı İşlevler'da büyük yük desteği yalnızca depolama sağlayıcısı olarak Dayanıklı Görev Zamanlayıcı'yı kullanan yalıtılmış .NET C# uygulamaları için kullanılabilir.
Özelliği etkinleştirmeden önce, uygulamanızın şu koşulları karşıladığından emin olun:
- .NET izole edilmiş çalışanı kullanır.
- Referanslar
Microsoft.Azure.Functions.Worker.Extensions.DurableTaskveMicrosoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged. -
AzureWebJobsStorageharici yükleri barındıran depolama hesabına ayarlar. - Hedef zamanlayıcı ve görev hub'ı için
DTS_CONNECTION_STRINGveTASKHUB_NAMEayarlar.
Ardından host.json'de büyük yük depolamayı etkinleştirin:
{
"version": "2.0",
"extensions": {
"durableTask": {
"storageProvider": {
"type": "azureManaged",
"connectionStringName": "DTS_CONNECTION_STRING",
"payloadStorageEnabled": true,
"payloadStorageThresholdBytes": 262144
},
"hubName": "%TASKHUB_NAME%"
}
}
}
Dayanıklı Görev Zamanlayıcı mesaj boyutu sınırının altına payloadStorageThresholdBytes ayarlayın, böylece çalışma zamanı yükleri sınırına yaklaşmadan önce dışa aktarır.
Düzenleyicinizde ve etkinlik kodunuzda standart Dayanıklı İşlevler API'lerini kullanın. Çalışma zamanı, blob başvurularını context.GetInput<T>() öncesinde otomatik olarak çözümler ve context.CallActivityAsync<T>() veri döndürür.
Varsayılan olarak, uzantı tarafından yapılandırılan durabletask-payloadsdepolama hesabındaki AzureWebJobsStorage kapsayıcıya harici yük yazar.
Uçtan uca örnekler için şu örneklere bakın:
Dayanıklı Görev SDK'larında büyük yük desteği .NET ve Python uygulamaları için kullanılabilir.
Azure Blob yükü uzantısı paketini yükleyin:
dotnet add package Microsoft.DurableTask.Extensions.AzureBlobPayloads
Dayanıklı Görev Zamanlayıcı için Azure Yönetilen istemcisini ve çalışan paketlerini yükleyin:
dotnet add package Microsoft.DurableTask.Client.AzureManaged
dotnet add package Microsoft.DurableTask.Worker.AzureManaged
Harici bir yük deposu kaydedin, bir eşik seçin ve hem istemcide hem de çalışanda yük çözümlemesini etkinleştirin:
builder.Services.AddExternalizedPayloadStore(options =>
{
options.ThresholdBytes = 262_144;
options.ConnectionString = builder.Configuration["PAYLOAD_STORAGE_CONNECTION_STRING"]
?? "UseDevelopmentStorage=true";
options.ContainerName = "durabletask-payloads";
});
builder.Services.AddDurableTaskClient(client =>
{
client.UseDurableTaskScheduler(schedulerConnectionString);
client.UseExternalizedPayloads();
});
builder.Services.AddDurableTaskWorker(worker =>
{
worker.UseDurableTaskScheduler(schedulerConnectionString);
worker.UseExternalizedPayloads();
});
Eğer depolama bağlantı dizesi yerine Microsoft Entra ID kullanıyorsanız, options.AccountUri ve options.Credential belirleyin. Örnek, DefaultAzureCredential kullanır ve isteğe bağlı olarak kullanıcı tarafından atanan yönetilen bir kimliği hedefleyebilir.
ThresholdBytes değerini 1,048,576 bayt veya altında tutun. Örnekte aynı zamanda SDK varsayılanı olan bayt (256 KiB) kullanılır 262,144 , bu nedenle yükleri 1 MiB zamanlayıcı ileti sınırına yaklaşmadan önce boşaltılır.
Uçtan uca bir .NET örneği için bkz. Durable Task SDK büyük yük örneği.
Ortam değişkeni yapılandırması
Geçerli Dayanıklı İşlevler örnekleriyle bu yerel ayarları veya uygulama ayarlarını kullanın.
| Setting | Açıklama | Örnek varsayılan |
|---|---|---|
FUNCTIONS_WORKER_RUNTIME |
Azure İşlevleri yalıtılmış çalışan çalışma zamanı | dotnet-isolated |
AzureWebJobsStorage |
İşlevler konak durumu ve yük blobları için depolama |
UseDevelopmentStorage=true Yerel |
DTS_CONNECTION_STRING |
Dayanıklı Görev Zamanlayıcı bağlantı dizesi | Endpoint=http://localhost:8080;Authentication=None |
TASKHUB_NAME |
Hedef görev hub'ı | default |
PAYLOAD_SIZE_BYTES |
Başlatıcı tarafından kullanılan veya her etkinlik tarafından oluşturulan yük boyutu | 1572864 |
ACTIVITY_COUNT |
Yalnızca fan-out/fan-in örneğindeki paralel etkinliklerin sayısı | 3 |
Bu ACTIVITY_COUNT ayar yalnızca LargePayloadFanOutFanIn örnek uygulama tarafından kullanılır. Gidiş LargePayload dönüş örneği bunu okumaz.
Geçerli Dayanıklı Görev SDK'sı örnekleriyle bu ortam değişkenlerini kullanın.
| Variable | Açıklama | Örnek varsayılan |
|---|---|---|
DURABLE_TASK_SCHEDULER_CONNECTION_STRING |
Dayanıklı Görev Zamanlayıcı bağlantı dizesi | Endpoint=http://localhost:8080;TaskHub=default;Authentication=None |
PAYLOAD_STORAGE_CONNECTION_STRING |
Dışsallaştırılmış yükler için blob depolama bağlantı dizesi | UseDevelopmentStorage=true |
PAYLOAD_STORAGE_ACCOUNT_URI |
Kimlik tabanlı yük depolama erişimi için Blob hesabı URI'si | Ayarı kaldır |
PAYLOAD_CONTAINER_NAME |
Dışlaştırılmış yükler için Blob kapsayıcısı | durabletask-payloads |
PAYLOAD_SIZE_BYTES |
Çalıştırma uç noktası tarafından kullanılan varsayılan yük boyutu | 1572864 |
THRESHOLD_BYTES |
Blob boşaltma eşiği | 262144 |
PAYLOAD_STORAGE_MANAGED_IDENTITY_CLIENT_ID |
Depolama erişimi için isteğe bağlı kullanıcı tarafından atanan yönetilen kimlik istemci kimliği | Ayarı kaldır |
AZURE_CLIENT_ID |
Kullanıcı tarafından atanan yönetilen kimliği seçmenin alternatif yolu | Ayarı kaldır |
ASPNETCORE_URLS |
Örneğin HTTP sunucusu için çıkış URL'leri | çerçeve varsayılanı |
PAYLOAD_STORAGE_CONNECTION_STRING ayarlı değilse ve PAYLOAD_STORAGE_ACCOUNT_URI sağlanmışsa, örnek DefaultAzureCredential kullanır. Kullanıcı tarafından atanan belirli bir kimliğe ihtiyacınız varsa PAYLOAD_STORAGE_MANAGED_IDENTITY_CLIENT_ID veya AZURE_CLIENT_ID ayarlayın.
Azure izinleri
Azure kaynaklarını yerel öykünücüler yerine kullandığınızda, uygulama kimliğinin Dayanıklı Görev Zamanlayıcı'ya ve Blob Depolama Alanı'na erişmesi gerekir.
- Uygulamanın görev merkezi üzerinde
Durable Task Data Contributorizni ver. - Depolama hesabında yük bloblarını depolayan
Storage Blob Data Contributoriçin izin ver.
Bu izinler, yönetilen kimlik kullanan Dayanıklı İşlevler uygulamaları ve Dayanıklı Görev SDK'sı uygulamaları için geçerlidir.
Yük boşaltmanın çalışıp çalışmadığını denetleyin
Yük boşaltmayı etkinleştirdikten sonra, yapılandırdığınız eşikten daha büyük bir giriş veya çıkışla bir düzenleme çalıştırın. Ardından her iki sinyali de kontrol edin:
- Yük 1 MiB'ı aşsa bile düzenleme başarıyla tamamlanmıştır.
- Blob kayıtları
durabletask-payloadskapsayıcıda görüntülenir.
Yerel geliştirme için kapsayıcıyı incelemek için şu Azure CLI komutunu çalıştırın:
az storage blob list \
--connection-string "UseDevelopmentStorage=true" \
--container-name durabletask-payloads \
--output table
Örnek uygulamalar gidiş dönüş işlemini de doğrular:
- Dayanıklı İşlevler örnekleri, giriş ve çıkış boyutlarını onaylayan küçük bir özet nesnesi döndürür.
- .NET Dayanıklı Görev SDK'sı örneği, çalıştırmanın yeni yük blobları oluşturup oluşturmadığını yazdırır.
- Python Dayanıklı Görev SDK'sı örneği, hem gömülü hem de dışa aktarılmış yük akışlarını çalıştırır ve her çalıştırma için orkestrasyon sonucunu yazdırır.
Çalışma zamanı gzip içerik kodlaması ile harici yükleri depoladığı için Azure sıkıştırılmış disk içi blob boyutunu bildirir. Geçerli düşük sıkıştırılabilirlik örnek yükleriyle, bu blob boyutları mantıksal yük boyutuna makul bir şekilde yakın olmalıdır.
Uyarı
Düzenleme örneklerini temizleme işlemi şu anda Azure Blob Depolama ilgili dışlaştırılmış yük bloblarını silmez. Bu yükleri kaldırmanız gerekiyorsa blobları depolama hesabından ayrı olarak silin.