Share via


Azure İşlevleri'de olay odaklı ölçeklendirme

Tüketim, Esnek Tüketim ve Premium planlarında Azure İşlevleri, bir işlevi tetikleyen olay sayısına göre daha fazla örnek ekleyerek kaynakları ölçeklendirir.

Önemli

Flex Consumption planı şu anda önizleme aşamasındadır.

İşlev uygulamanızın ölçeklendirilme şekli barındırma planına bağlıdır:

  • Tüketim planı: Tüketim planındaki İşlevler ana bilgisayarının her örneği genellikle 1,5 GB bellek ve bir CPU ile sınırlıdır. Konağın bir örneği işlev uygulamasının tamamını destekler. Bu nedenle, bir işlev uygulamasındaki tüm işlevler bir örnekteki kaynağı paylaşırken aynı anda ölçeklendirilir. İşlev uygulamaları aynı Tüketim planını paylaştığında, bunlar yine de bağımsız olarak ölçeklendirilir.

  • Esnek Tüketim planı: Plan, HTTP, Blob ve Dayanıklı İşlevler tetiklenen işlevler dışında her işlevin kendi gruplarında ölçeklendirildiği bağımsız olarak ölçeklendirildiği, işlev başına belirlenimci bir ölçeklendirme stratejisi kullanır. Daha fazla bilgi için bkz . İşlev başına ölçeklendirme. Bu örnekler daha sonra isteklerinizin eşzamanlılığı temelinde ölçeklendirilir.

  • Premium plan: Premium planının belirli boyutu, bu örnekteki plandaki tüm uygulamalar için kullanılabilir belleği ve CPU'ları belirler. Plan, plandaki uygulamaların ölçeklendirme gereksinimlerine göre örneklerinin ölçeğini genişletiyor ve uygulamalar da plan dahilinde gerektiği gibi ölçeklendiriliyor.

İşlev kodu dosyaları, işlevin ana depolama hesabındaki Azure Dosyalar paylaşımlarında depolanır. İşlev uygulamasının ana depolama hesabını sildiğinizde işlev kodu dosyaları silinir ve kurtarılamaz.

Çalışma zamanı ölçeklendirme

Azure İşlevleri, olayların hızını izlemek ve ölçeğin genişletilip genişletilip genişletileceğini belirlemek için ölçek denetleyicisi adlı bir bileşen kullanır. Ölçek denetleyicisi her tetikleyici türü için buluşsal yöntemleri kullanır. Örneğin, Azure Kuyruk depolama tetikleyicisi kullanırken hedef tabanlı ölçeklendirme kullanılır.

Azure İşlevleri için ölçek birimi, işlev uygulamasıdır. İşlev uygulamasının ölçeği genişletildiğinde, Azure İşlevleri konağın birden çok örneğini çalıştırmak için daha fazla kaynak ayrılır. Buna karşılık, işlem talebi azaldıkça, ölçek denetleyicisi işlev ana bilgisayar örneklerini kaldırır. İşlev uygulamasında hiçbir işlev çalıştırıldığında örnek sayısı sonunda "ölçeklendirilir".

Ölçek denetleyicisi izleme olayları ve örnek oluşturma

Soğuk Başlangıç

İşlev uygulamanız birkaç dakika boşta kaldığında platform, uygulamanızın çalıştığı örnek sayısını sıfıra düşürmeye karar verebilir. Sonraki istekte, sıfırdan bire ölçeklendirme gecikme süresi eklendi. Bu gecikme süresi, soğuk başlangıç olarak adlandırılır. İşlev uygulamanızın gerektirdiği bağımlılık sayısı, soğuk başlangıç zamanını etkileyebilir. Soğuk başlatma, yanıt döndürmesi gereken HTTP tetikleyicileri gibi zaman uyumlu işlemler için daha fazla sorun oluşturur. Soğuk başlangıçlar işlevlerinizi etkiliyorsa Tüketim dışında bir plan kullanmayı göz önünde bulundurun. Diğer planlar soğuk başlangıçları azaltmak veya ortadan kaldırmak için şu stratejileri sunar:

  • Premium plan: En az bir örnekle hem önceden hazır örnekleri hem de her zaman hazır örnekleri destekler.

  • Esnek Tüketim planı: Örnek başına ölçeklendirme temelinde tanımlanabilen isteğe bağlı her zaman hazır örnek sayısını destekler.

  • Ayrılmış plan: Planın kendisi dinamik olarak ölçeklendirilmiyor, ancak Her zaman açık ayarı etkinken uygulamanızı sürekli olarak çalıştırabilirsiniz.

Ölçeklendirme davranışlarını anlama

Ölçeklendirme çeşitli faktörlere göre farklılık gösterebilir ve uygulamalar seçilen tetikleyicilere ve dile göre farklı ölçeklendirilebilir. Ölçeklendirme davranışlarının dikkate alınması gereken birkaç karmaşıklığı vardır:

  • En fazla örnek: Tek bir işlev uygulaması yalnızca plan tarafından izin verilen en yüksek düzeye ölçeklendirilir. Ancak, tek bir örnek aynı anda birden fazla iletiyi veya isteği işleyebilir. Gerektiğinde ölçeği kısıtlamak için daha düşük bir maksimum değer belirtebilirsiniz.
  • Yeni örnek hızı: HTTP tetikleyicileri için yeni örnekler en fazla saniyede bir kez ayrılır. HTTP olmayan tetikleyiciler için yeni örnekler en fazla 30 saniyede bir ayrılır. Bir Premium planda çalışırken ölçeklendirme daha hızlıdır.
  • Hedef tabanlı ölçeklendirme: Hedef tabanlı ölçeklendirme, müşteriler için hızlı ve sezgisel bir ölçeklendirme modeli sağlar ve şu anda Service Bus kuyrukları ve konuları, Depolama kuyrukları, Event Hubs, Apache Kafka ve Azure Cosmos DB uzantıları için desteklenmektedir. Ölçeklendirme davranışlarını anlamak için hedef tabanlı ölçeklendirmeyi gözden geçirmeyi unutmayın.
  • İşlev başına ölçeklendirme: Bazı önemli özel durumlarla, Flex Tüketim planında çalışan işlevler bağımsız örneklere göre ölçeklendirilir. Özel durumlar HTTP tetikleyicilerini ve Blob depolama (Event Grid) tetikleyicilerini içerir. Bu tetikleyici türlerinin her biri aynı örneklerde bir grup olarak birlikte ölçeklendirilir. Benzer şekilde, tüm Dayanıklı İşlevler tetikleyicileri de örnekleri paylaşır ve birlikte ölçeklendirir. Daha fazla bilgi için bkz . işlev başına ölçeklendirme.

Ölçeği genişletmeyi sınırla

Bir uygulamanın ölçeği genişletmek için kullanabileceği en fazla örnek sayısını kısıtlamaya karar vekleyebilirsiniz. Bu, veritabanı gibi bir aşağı akış bileşeninin sınırlı aktarım hızına sahip olduğu durumlarda en yaygın olanıdır. Çeşitli barındırma planlarını çalıştırırken en yüksek ölçek sınırları için bkz . Ölçek sınırları.

Esnek Tüketim planı

Varsayılan olarak, Flex Consumption planında çalışan uygulamaların genel örneklerin 100 sınırı vardır. Şu anda en düşük en büyük örnek sayısı değeri, 40desteklenen en yüksek örnek sayısı değeri ise olur 1000. Flex Consumption planında az functionapp create bir işlev uygulaması oluşturmak için komutunu kullandığınızda, uygulamanızın --maximum-instance-count bu maksimum örnek sayısını ayarlamak için parametresini kullanın. Bu örnek, örnek sayısı 200üst sınırı olan bir uygulama oluşturur:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_ACCOUNT_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --maximum-instance-count 200

Bu örnek, az functionapp scale config set mevcut bir uygulamanın 150en fazla örnek sayısını olarak değiştirmek için komutunu kullanır:

az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --maximum-instance-count 150

Tüketim/Premium planları

Tüketim veya Elastik Premium planında, site yapılandırma ayarının değerini functionAppScaleLimit değiştirerek uygulamanız için daha düşük bir üst sınır belirtebilirsiniz. functionAppScaleLimit, kısıtlanmamış veya null için veya ile uygulama üst sınırı arasında 1 geçerli bir değer olarak ayarlanabilir0.

az resource update --resource-type Microsoft.Web/sites -g <RESOURCE_GROUP> -n <FUNCTION_APP-NAME>/config/web --set properties.functionAppScaleLimit=<SCALE_LIMIT>

Ölçek daraltma davranışları

İşlevlerinize olan talep azaldığında olay odaklı ölçeklendirme otomatik olarak kapasiteyi azaltır. Bunu, geçerli işlev yürütmelerinin örneklerini boşaltarak yapar ve ardından bu örnekleri kaldırır. Bu davranış, boşaltma modu olarak günlüğe kaydedilir. Şu anda yürütülen işlevler için yetkisiz kullanım süresi, Tüketim planı uygulamaları için 10 dakikaya ve Premium plan uygulamaları için 60 dakikaya kadar uzatılabilir. Olay temelli ölçeklendirme ve bu davranış Ayrılmış plan uygulamaları için geçerli değildir.

Ölçeklendirme davranışları için aşağıdaki noktalar geçerlidir:

  • Tüketim planında Windows üzerinde çalışan uygulamalar için yalnızca Mayıs 2021'dan sonra oluşturulan uygulamalarda varsayılan olarak boşaltma modu davranışları etkindir.
  • Service Bus tetikleyicisini kullanarak işlevlerde düzgün kapatmayı etkinleştirmek için Service Bus Uzantısı'nın 4.2.0 veya sonraki bir sürümünü kullanın.

İşlev başına ölçeklendirme

Yalnızca Esnek Tüketim planı (önizleme) için geçerlidir.

Esnek Tüketim planı, işlev başına ölçeklendirme davranışı uyguladığı için benzersizdir. HTTP tetikleyicileri, Blob (Event Grid) tetikleyicileri ve Dayanıklı İşlevler dışında işlev başına ölçeklendirmede uygulamanızdaki diğer tüm işlev tetikleyici türleri bağımsız örneklere göre ölçeklendirilir. Uygulamanızdaki HTTP tetikleyicilerinin tümü, kendi paylaşılan örnekleri olan tüm Blob (Event Grid) ve tüm Dayanıklı İşlevler tetikleyicileri gibi aynı örneklerde bir grup olarak birlikte ölçeklendirilir.

Şu işleve sahip bir Esnek Tüketim planı barındıran bir işlev uygulaması düşünün:

işlev1 işlev2 işlev3 işlev4 işlev5 işlev6 işlev7
HTTP tetikleyicisi HTTP tetikleyicisi Düzenleme tetikleyicisi (Dayanıklı) Etkinlik tetikleyicisi (Dayanıklı) Service Bus tetikleyicisi Service Bus tetikleyicisi Event Hubs tetikleyicisi

Bu örnekte:

  • HTTP ile tetiklenen iki işlev (function1 ve function2) kendi örneklerinde birlikte çalışır ve HTTP eşzamanlılık ayarlarına göre birlikte ölçeklendirilir.
  • İki Dayanıklı işlevin (function3 ve function4) her ikisi de kendi örneklerinde birlikte çalışır ve yapılandırılmış eşzamanlılık azaltmalarına göre birlikte ölçeklendirilir.
  • Service Bus ile tetiklenen işlev function5 kendi içinde çalışır ve Service Bus kuyrukları ve konu başlıkları için hedef tabanlı ölçeklendirme kurallarına göre bağımsız olarak ölçeklendirilir.
  • Service Bus ile tetiklenen işlev function6 kendi içinde çalışır ve Service Bus kuyrukları ve konu başlıkları için hedef tabanlı ölçeklendirme kurallarına göre bağımsız olarak ölçeklendirilir.
  • Event Hubs tetikleyicisi (function7) kendi örneklerinde çalışır ve Event Hubs için hedef tabanlı ölçeklendirme kurallarına göre bağımsız olarak ölçeklendirilir.

Ölçeklenebilir uygulamalar için en iyi yöntemler ve desenler

Bir işlev uygulamasının ölçeklendiriliş biçimini etkileyen konak yapılandırması, çalışma zamanı ayak izi ve kaynak verimliliği gibi birçok yönü vardır. Daha fazla bilgi için performansla ilgili dikkat edilmesi gerekenler makalesinin ölçeklenebilirlik bölümüne bakın. Ayrıca, işlev uygulamanızın ölçeklendirilmesiyle bağlantıların nasıl davrandığını da bilmeniz gerekir. Daha fazla bilgi için bkz. Azure İşlevleri'da bağlantıları yönetme.

Python ve Node.js ölçeklendirme hakkında daha fazla bilgi için bkz. Azure İşlevleri Python geliştirici kılavuzu - Ölçeklendirme ve eşzamanlılık ile Azure İşlevleri Node.js geliştirici kılavuzu - Ölçeklendirme ve eşzamanlılık.

Sonraki adımlar

Daha fazla bilgi için aşağıdaki makalelere bakın: