Aracılığıyla paylaş


Dayanıklı İşlevler depolama sağlayıcıları

Dayanıklı İşlevler, Dayanıklı Görev Çerçevesi (DTFx) tarafından dahili olarak desteklenen Azure İşlevleri tetikleyicileri ve bağlamaları kümesidir. DTFx, Dayanıklı İşlevler tarafından kullanılan Azure Depolama sağlayıcısı dahil olmak üzere çeşitli arka uç depolama sağlayıcılarını destekler. Dayanıklı İşlevler v2.5.0'dan başlayarak kullanıcılar işlev uygulamalarını Azure Depolama sağlayıcısı dışındaki DTFx depolama sağlayıcılarını kullanacak şekilde yapılandırabilir.

Dekont

Birçok işlev uygulamasında, Dayanıklı İşlevler için varsayılan Azure Depolama sağlayıcısı yeterlidir ve ek yapılandırma gerektirmediğinden kullanımı en kolay seçenektir. Ancak alternatif bir depolama sağlayıcısının kullanılmasını destekleyebilecek maliyet, ölçeklenebilirlik ve veri yönetimi dengeleri vardır.

Dayanıklı İşlevler ve Dayanıklı Görev Çerçevesi ile kullanılmak üzere netherite depolama sağlayıcısı ve Microsoft SQL Server (MSSQL) depolama sağlayıcısı olarak iki alternatif depolama sağlayıcısı geliştirilmiştir. Bu makalede desteklenen üç sağlayıcı da açıklanır, bunları birbiriyle karşılaştırır ve kullanmaya başlama hakkında temel bilgiler sağlanır.

Dekont

Şu anda verileri bir depolama sağlayıcısından diğerine geçirmek mümkün değildir. Yeni bir depolama sağlayıcısı kullanmak istiyorsanız, yeni depolama sağlayıcısıyla yapılandırılmış yeni bir uygulama oluşturmanız gerekir.

Azure Depolama

Azure Depolama, Dayanıklı İşlevler için varsayılan depolama sağlayıcısıdır. Düzenlemeyi ve varlık durumunu kalıcı hale getirmek için kuyrukları, tabloları ve blobları kullanır. Ayrıca, bölümleri yönetmek için blobları ve blob kiralarını kullanır. Çoğu durumda, Dayanıklı İşlevler çalışma zamanı durumunu depolamak için kullanılan depolama hesabı, Azure İşlevleri () tarafından kullanılan varsayılan depolama hesabıyla aynıdırAzureWebJobsStorage. Ancak, Dayanıklı İşlevler ayrı bir depolama hesabıyla yapılandırmak da mümkündür. Azure Depolama sağlayıcısı Dayanıklı İşlevler uzantısında yerleşiktir ve başka hiçbir bağımlılığı yoktur.

Azure Depolama sağlayıcısının başlıca avantajları şunlardır:

  • Kurulum gerekmez- İşlev uygulaması kurulum deneyimi tarafından sizin için oluşturulan depolama hesabını kullanabilirsiniz.
  • En düşük maliyetli sunucusuz faturalama modeli - Azure Depolama tamamen kullanıma dayalı tüketim tabanlı bir fiyatlandırma modeline sahiptir (daha fazla bilgi).
  • En iyi araç desteği - Azure Depolama platformlar arası yerel öykünme sunar ve Visual Studio, Visual Studio Code ve Azure İşlevleri Core Araçları ile tümleştirilir.
  • En olgun - Azure Depolama, Dayanıklı İşlevler için orijinal ve en savaş testli depolama arka ucuydu.
  • Depolama sağlayıcısına bağlanmak için gizli diziler yerine kimlik kullanımı için önizleme desteği.

Azure Depolama depolama sağlayıcısının DTFx bileşenlerinin kaynak kodu Azure/durabletask GitHub deposunda bulunabilir.

Dekont

Azure Depolama sağlayıcısı kullanılırken standart genel amaçlı Azure Depolama hesapları gereklidir. Diğer tüm depolama hesabı türleri desteklenmez. Daha yeni v2 depolama hesapları Dayanıklı İşlevler iş yükleri için önemli ölçüde daha pahalı olabileceğinden, eski v1 genel amaçlı depolama hesaplarını kullanmanızı kesinlikle öneririz. Azure Depolama hesap türleri hakkında daha fazla bilgi için Depolama hesaba genel bakış belgelerine bakın.

Netherite

Netherite depolama arka ucu Microsoft Research tarafından tasarlanmış ve geliştirilmiştir. Azure Sayfa Blobları'nın üzerinde Azure Event Hubs ve FASTER veritabanı teknolojisini kullanır. Netherite tasarımı, diğer sağlayıcılara kıyasla düzenleme ve varlıkların önemli ölçüde daha yüksek aktarım hızına sahip işlenmesini sağlar. Bazı karşılaştırma senaryolarında, aktarım hızının varsayılan Azure Depolama sağlayıcısıyla karşılaştırıldığında bir büyüklük sırasına göre daha fazla arttığı gösterilmiştir.

Netherite depolama sağlayıcısının başlıca avantajları şunlardır:

  • Diğer depolama sağlayıcılarına kıyasla daha düşük maliyetle önemli ölçüde daha yüksek aktarım hızı.
  • Fiyat-performans iyileştirmesini destekler ve gerektiğinde performansın ölçeğini artırmanıza olanak sağlar.
  • Event Hubs Basic ve Standard SKU'ları ile en fazla 32 veri bölümünü destekler.
  • Yüksek aktarım hızına sahip iş yükleri için diğer sağlayıcılardan daha uygun maliyetlidir.

Netherite depolama sağlayıcısının teknik ayrıntıları hakkında daha fazla bilgi edinmek için Netherite belgelerini inceleyebilirsiniz. Netherite depolama sağlayıcısının kaynak kodu microsoft/durabletask-netherite GitHub deposunda bulunabilir. Netherite depolama sağlayıcısının daha ayrıntılı bir değerlendirmesi şu araştırma makalesinde de mevcuttur: Dayanıklı İşlevler ve Netherite ile Sunucusuz İş Akışları.

Dekont

Netherite adı Minecraft dünyasından geliyor.

Microsoft SQL Server (MSSQL)

Microsoft SQL Server (MSSQL) depolama sağlayıcısı, tüm durumu bir Microsoft SQL Server veritabanında kalıcı hale getirmektedir. Azure SQL Veritabanı dahil olmak üzere hem şirket içi hem de bulutta barındırılan SQL Server dağıtımlarıyla uyumludur.

MSSQL depolama sağlayıcısının başlıca avantajları şunlardır:

  • Bağlantısı kesilmiş ortamları destekler. SQL Server yüklemesi kullanılırken Azure bağlantısı gerekmez.
  • Azure'da barındırılan ve şirket içinde de dahil olmak üzere birden çok ortam ve bulut arasında taşınabilir.
  • Veri kaybı olmadan yedekleme/geri yükleme ve yük devretmeyi etkinleştiren güçlü veri tutarlılığı.
  • Özel veri şifrelemesi için yerel destek (SQL Server'ın bir özelliği).
  • Yerleşik saklı yordamlar aracılığıyla mevcut veritabanı uygulamalarıyla tümleştirilir.

MsSQL depolama sağlayıcısının teknik ayrıntıları hakkında daha fazla bilgi edinmek için Microsoft SQL sağlayıcısı belgelerine göz atabilirsiniz. MSSQL depolama sağlayıcısının kaynak kodu microsoft/durabletask-mssql GitHub deposunda bulunabilir.

Alternatif depolama sağlayıcılarını yapılandırma

Alternatif depolama sağlayıcılarının yapılandırılması genellikle iki adımlı bir işlemdir:

  1. İşlev uygulamanıza uygun NuGet paketini ekleyin (bu gereksinim, uzantı paketlerini kullanan uygulamalar için geçicidir).
  2. Hangi depolama sağlayıcısını kullanmak istediğinizi belirtmek için host.json dosyasını güncelleştirin.

Host.json dosyasında açıkça yapılandırılmış bir depolama sağlayıcısı yoksa Azure Depolama sağlayıcısı varsayılan olarak etkinleştirilir.

Azure depolama sağlayıcısını yapılandırma

Azure Depolama sağlayıcısı varsayılan depolama sağlayıcısıdır ve açık yapılandırma, NuGet paket başvuruları veya uzantı paketi başvuruları gerektirmez. Tam host.json yapılandırma seçeneklerini burada, yolun altında extensions/durableTask/storageProvider bulabilirsiniz.

Bağlantılar

connectionName host.json'daki özelliği, uygulamanın Azure Depolama'a nasıl bağlanması gerektiğini belirten bir ortam yapılandırması başvurusudur. Şunları belirtebilir:

  • bağlantı dizesi içeren bir uygulama ayarının adı. bağlantı dizesi almak için Depolama hesabı erişim anahtarlarını yönetme bölümünde gösterilen adımları izleyin.
  • Birden çok uygulama ayarı için paylaşılan ön ekin adı ve birlikte kimlik tabanlı bağlantı tanımlama.

Yapılandırılan değer hem tek bir ayar için tam eşleşme hem de diğer ayarlar için bir ön ek eşleşmesiyse, tam eşleşme kullanılır. host.json dosyasında hiçbir değer belirtilmezse, varsayılan değer "AzureWebJobs Depolama" olur.

Kimlik tabanlı bağlantılar

Uzantının ve Azure depolama sağlayıcısının 2.7.0 veya sonraki bir sürümünü kullanıyorsanız, gizli dizili bir bağlantı dizesi kullanmak yerine uygulamanın bir Microsoft Entra kimliği kullanmasını sağlayabilirsiniz. Bunu yapmak için, tetikleyici ve bağlama yapılandırmasındaki özelliğiyle connectionName eşlenen ortak bir ön ekin altında ayarlar tanımlayabilirsiniz.

Dayanıklı İşlevler için kimlik tabanlı bağlantı kullanmak için aşağıdaki uygulama ayarlarını yapılandırın:

Özellik Ortam değişkeni şablonu Tanım Örnek değer
Blob hizmeti URI'si <CONNECTION_NAME_PREFIX>__blobServiceUri HTTPS şemasını kullanarak depolama hesabının blob hizmetinin veri düzlemi URI'si. <https:// storage_account_name.blob.core.windows.net>
Kuyruk hizmeti URI'si <CONNECTION_NAME_PREFIX>__queueServiceUri HTTPS şemasını kullanarak depolama hesabının kuyruk hizmetinin veri düzlemi URI'si. <https:// storage_account_name.queue.core.windows.net>
Tablo hizmeti URI'si <CONNECTION_NAME_PREFIX>__tableServiceUri HTTPS şemasını kullanarak depolama hesabının tablo hizmetinin veri düzlemi URI'si. <https:// storage_account_name.table.core.windows.net>

Bağlantıyı özelleştirmek için ek özellikler ayarlanabilir. Bkz. Kimlik tabanlı bağlantılar için ortak özellikler.

Azure İşlevleri hizmetinde barındırıldığında, kimlik tabanlı bağlantılar yönetilen kimlik kullanır. Ve özellikleriyle credentialclientID kullanıcı tarafından atanan bir kimlik belirtilse de, sistem tarafından atanan kimlik varsayılan olarak kullanılır. Kullanıcı tarafından atanan kimliği kaynak kimliğiyle yapılandırmanın desteklenmediğini unutmayın. Yerel geliştirme gibi diğer bağlamlarda çalıştırıldığında, bunun yerine geliştirici kimliğiniz kullanılır, ancak bu özelleştirilebilir. Bkz. Kimlik tabanlı bağlantılarla yerel geliştirme.

Kimliğe izin verme

Hangi kimlik kullanılıyorsa, hedeflenen eylemleri gerçekleştirmek için izinlere sahip olmalıdır. Çoğu Azure hizmeti için bu, bu izinleri sağlayan yerleşik veya özel rolleri kullanarak Azure RBAC'de bir rol atamanız gerektiği anlamına gelir.

Önemli

Bazı izinler, tüm bağlamlar için gerekli olmayan hedef hizmet tarafından gösterilebilir. Mümkün olduğunda, kimliğe yalnızca gerekli ayrıcalıkları sağlayarak en az ayrıcalık ilkesine uyun. Örneğin, uygulamanın yalnızca bir veri kaynağından okuyabilmesi gerekiyorsa, yalnızca okuma izni olan bir rol kullanın. Okuma işlemi için aşırı izin olduğundan, bu hizmete yazmaya da izin veren bir rol atamak uygun olmaz. Benzer şekilde, rol atamasının kapsamının yalnızca okunması gereken kaynaklara göre ayarlandığından emin olmak istersiniz.

Çalışma zamanında Azure depolamaya erişim sağlayan bir rol ataması oluşturmanız gerekir. Sahip gibi yönetim rolleri yeterli değildir. Normal işlemde Dayanıklı İşlevler uzantısı kullanılırken aşağıdaki yerleşik roller önerilir:

Uygulamanız, yazdığınız koda göre daha fazla izin gerektirebilir. Varsayılan davranışı kullanıyorsanız veya açıkça "AzureWebJobs Depolama" olarak ayarlanıyorsanızconnectionName, diğer izin konuları için bkz. Bağlan depolamayı kimlikle barındırma.

Netherite depolama sağlayıcısını yapılandırma

Netherite depolama sağlayıcısının etkinleştirilmesi, içinde host.jsonbir yapılandırma değişikliği gerektirir. C# kullanıcıları için ek bir yükleme adımı da gerekir.

host.json Yapılandırma

Aşağıdaki host.json örneği, Netherite depolama sağlayıcısını etkinleştirmek için gereken en düşük yapılandırmayı gösterir.

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "storageProvider": {
        "type": "Netherite",
        "storageConnectionName": "AzureWebJobsStorage",
        "eventHubsConnectionName": "EventHubsConnection"
      }
    }
  }
}

Daha ayrıntılı kurulum yönergeleri için Netherite kullanmaya başlama belgelerine bakın.

Netherite uzantısını yükleme (yalnızca.NET)

Dekont

Uygulamanız Uzantı Paketleri kullanıyorsa , Uzantı Paketleri el ile Uzantı yönetimi gereksinimini ortadan kaldırdıkça bu bölümü yoksaymalısınız.

NuGet'e Netherite Uzantısının en son sürümünü yüklemeniz gerekir. Bu genellikle dosyanıza .csproj başvuru eklemek ve projeyi oluşturmak anlamına gelir.

Yüklenecek Uzantı paketi, kullandığınız .NET çalışanına bağlıdır:

MSSQL depolama sağlayıcısını yapılandırma

MSSQL depolama sağlayıcısının etkinleştirilmesi, içinde host.jsonbir yapılandırma değişikliği gerektirir. C# kullanıcıları için ek bir yükleme adımı da gerekir.

host.json Yapılandırma

Aşağıdaki örnekte MSSQL depolama sağlayıcısını etkinleştirmek için gereken en düşük yapılandırma gösterilmektedir.

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "storageProvider": {
        "type": "mssql",
        "connectionStringName": "SQLDB_Connection"
      }
    }
  }
}

Daha ayrıntılı kurulum yönergeleri için MSSQL sağlayıcısının başlangıç belgelerine bakın.

Dayanıklı Görev MSSQL uzantısını yükleme (yalnızca.NET)

Dekont

Uygulamanız Uzantı Paketleri kullanıyorsa , Uzantı Paketleri el ile Uzantı yönetimi gereksinimini ortadan kaldırdıkça bu bölümü yoksaymalısınız.

NuGet'e MSSQL depolama sağlayıcısı uzantısının en son sürümünü yüklemeniz gerekir. Bu genellikle dosyanıza .csproj başvuru eklemek ve projeyi oluşturmak anlamına gelir.

Yüklenecek Uzantı paketi, kullandığınız .NET çalışanına bağlıdır:

Depolama sağlayıcılarını karşılaştırma

Desteklenen çeşitli depolama sağlayıcıları arasında birçok önemli denge vardır. Aşağıdaki tablo, bu dengeleri anlamanıza ve ihtiyaçlarınıza en uygun depolama sağlayıcısına karar vermenize yardımcı olmak için kullanılabilir.

Depolama sağlayıcısı Azure Depolama Netherite MSSQL
Resmi destek durumu ✅ Genel kullanıma sunuldu (GA) ✅ Genel kullanıma sunuldu (GA) ✅ Genel kullanıma sunuldu (GA)
Dış bağımlılıklar Azure Depolama hesabı (genel amaçlı v1) Azure Event Hubs
Azure Depolama hesabı (genel amaçlı)
SQL Server 2019 veya Azure SQL Veritabanı
Yerel geliştirme ve öykünme seçenekleri Azurite v3.12+ (platformlar arası) Görev hub'larının bellek içi öykünmesini destekler (daha fazla bilgi) SQL Server Developer Edition (Windows, Linux ve Docker kapsayıcılarını destekler)
Görev hub'ı yapılandırması Açık Açık Varsayılan olarak örtük (daha fazla bilgi)
Aktarım hızı üst sınırı Orta Çok yüksek Orta
En fazla düzenleme/varlık ölçeği genişletme (düğümler) 16 32 Geçersiz
Etkinlik ölçeğini genişletme (düğümler) üst sınırı Geçersiz 32 Geçersiz
KEDA 2.0 ölçeklendirme desteği
(daha fazla bilgi)
❌ Desteklenmiyor ❌ Desteklenmiyor ✅MSSQL ölçeklendiricisi kullanılarak desteklenir (daha fazla bilgi)
Uzantı paketleri desteği (non-.NET uygulamalar için önerilir) ✅ Tam olarak desteklenir ✅ Tam olarak desteklenir ✅ Tam olarak desteklenir
Fiyat-performans yapılandırılabilir mi? ❌ Hayır ✅ Evet (Event Hubs TU'ları ve RU'ları) ✅ Evet (SQL vCPU'ları)
Bağlantısı kesilmiş Çevre desteği ❌ Azure bağlantısı gerekiyor ❌ Azure bağlantısı gerekiyor ✅ Tam olarak desteklenir
Kimlik tabanlı bağlantılar ✅ Tam olarak desteklenir ❌ Desteklenmiyor ⚠️ Çalışma zamanı temelli ölçeklendirme gerektirir

Sonraki adımlar