Оқиға
AI бағдарламалары мен агенттерін құру
Mar 17, 9 PM - Mar 21, 10 AM
Нақты пайдалану жағдайлары негізінде масштабты ИСК шешімдерін құру үшін стипендиаттармен және сарапшылармен кездесу сериясына қосылыңыз.
Қазір тіркелуБұл браузерге бұдан былай қолдау көрсетілмейді.
Соңғы мүмкіндіктерді, қауіпсіздік жаңартуларын және техникалық қолдауды пайдалану үшін Microsoft Edge браузеріне жаңартыңыз.
Масштабирование на основе целевого объекта обеспечивает быструю и интуитивно понятную модель масштабирования для клиентов и в настоящее время поддерживается для этих расширений привязки:
Масштабирование на основе целевых объектов заменяет предыдущую Функции Azure добавочную модель масштабирования в качестве стандартной для этих типов расширений. Добавочное масштабирование добавлено или удалено не более одного рабочего на каждом новом уровне экземпляра с сложными решениями о масштабировании. В отличие от этого, масштабирование на основе целевых объектов позволяет масштабировать четыре экземпляра одновременно, а решение масштабирования основано на простом целевом уравнении:
В этом уравнении длина источника событий относится к числу событий, которые должны обрабатываться. Целевые выполнения по умолчанию для каждого экземпляра получены из пакетов SDK, используемых расширениями Функции Azure. Для работы масштабирования на основе целевых целей не требуется вносить никаких изменений.
При использовании масштабирования на основе целевого объекта применяются следующие рекомендации.
Масштабирование на основе целевого объекта по умолчанию включено для приложений-функций, размещенных в плане потребления или в планах Premium. Чтобы отключить масштабирование на основе целевого объекта и вернуться к добавочному масштабированию, добавьте следующий параметр приложения в приложение-функцию:
Параметр приложения | Значение |
---|---|
TARGET_BASED_SCALING_ENABLED |
0 |
Вы можете сделать поведение масштабирования более или менее агрессивным на основе рабочей нагрузки вашего приложения, изменив целевые выполнения на экземпляр. Каждое расширение имеет разные параметры, которые можно использовать для задания целевых выполнений на экземпляр.
В этой таблице перечислены host.json
значения, которые используются для целевых выполнений для значений экземпляра и значений по умолчанию:
Расширение | host.json значения | Значение по умолчанию |
---|---|---|
Центры событий (расширение версии 5.x+) | extensions.eventHubs.maxEventBatchSize | 100* |
Центры событий (расширение версии 3.x+) | extensions.eventHubs.eventProcessorOptions.maxBatchSize | 10 |
Центры событий (если определено) | extensions.eventHubs.targetUnprocessedEventThreshold | Н/Д |
служебная шина (расширение версии 5.x+, одна диспетчеризация) | extensions.serviceBus.maxConcurrentCalls | 16 |
служебная шина (расширение версии 5.x+, на основе отдельных сеансов отправки) | extensions.serviceBus.maxConcurrentSessions | 8 |
служебная шина (расширение версии 5.x+, пакетная обработка) | extensions.serviceBus.maxMessageBatchSize | 1000 |
служебная шина (Функции версии 2.x+, одна отправка) | extensions.serviceBus.messageHandlerOptions.maxConcurrentCalls | 16 |
служебная шина (Функции версии 2.x+, на основе отдельных сеансов отправки) | extensions.serviceBus.sessionHandlerOptions.maxConcurrentSessions | 2000 |
служебная шина (Функции версии 2.x+, пакетная обработка) | extensions.serviceBus.batchOptions.maxMessageCount | 1000 |
Очередь хранилища | extensions.queues.batchSize | 16 |
* Значение по умолчанию maxEventBatchSize
изменилось в версии 6.0.0 Microsoft.Azure.WebJobs.Extensions.EventHubs
пакета. В более ранних версиях это значение равно 10.
Для некоторых расширений привязки целевые выполнения для каждого экземпляра задаются с помощью атрибута функции:
Расширение | Параметр триггера функции | Значение по умолчанию |
---|---|---|
Apache Kafka | lagThreshold |
1000 |
Azure Cosmos DB | maxItemsPerInvocation |
100 |
Дополнительные сведения см. в примерах конфигураций поддерживаемых расширений.
Если включен мониторинг масштабирования среды выполнения, расширения сами обрабатывают динамическое масштабирование. Это связано с тем, что контроллер масштабирования не имеет доступа к службам, защищенным виртуальной сетью. После включения мониторинга масштабирования среды выполнения необходимо обновить пакеты расширений до следующих минимальных версий, чтобы разблокировать дополнительные функции масштабирования на основе целевых объектов:
Имя расширения | Минимальная версия, необходимая |
---|---|
Apache Kafka | 3.9.0 |
Azure Cosmos DB | 4.1.0 |
Event Hubs | 5.2.0 |
Cлужебная шина | 5.9.0 |
Очередь хранилища | 5.1.0 |
Масштабирование на основе целевого объекта ускоряет масштабирование и использует значения по умолчанию для целевых выполнений для каждого экземпляра. При использовании служебная шина, очередей хранилища или Kafka можно также включить динамическое параллелизм. В этой конфигурации целевое значение для каждого экземпляра определяется автоматически функцией динамического параллелизма. Он начинается с ограниченной параллелизма и определяет лучший параметр с течением времени.
Способ настройки масштабирования на основе целевого объекта в файле host.json зависит от конкретного типа расширения. В этом разделе приведены сведения о конфигурации расширений, которые в настоящее время поддерживают масштабирование на основе целевого объекта.
Расширение служебная шина поддерживает три модели выполнения, определяемые и IsSessionsEnabled
атрибутами IsBatched
триггера служебная шина. Значение по умолчанию для IsBatched
и IsSessionsEnabled
имеет значение false
.
Модель выполнения | IsBatched | IsSessionsEnabled | Настройка, используемая для целевых выполнений для каждого экземпляра |
---|---|---|---|
Одноразовая обработка отправки | false | false | maxConcurrentCalls |
Единая обработка диспетчера (на основе сеансов) | false | true | maxConcurrentSessions |
Пакетная обработка | true | false | maxMessageBatchSize или maxMessageCount |
Ескерім
Эффективность масштабирования. Для расширения служебная шина используйте права управления ресурсами для наиболее эффективного масштабирования. При масштабировании прав прослушивания выполняется переход к добавочному масштабированию, так как длина очереди или раздела не может использоваться для информирования о принятии решений по масштабированию. Дополнительные сведения о настройке прав в политиках доступа служебной шины см. в этом разделе.
В этой модели каждый вызов функции обрабатывает одно сообщение. Параметр maxConcurrentCalls
управляет целевыми выполнениями на экземпляр. Конкретный параметр зависит от версии расширения служебная шина.
Измените host.json
параметр maxConcurrentCalls
, как показано в следующем примере:
{
"version": "2.0",
"extensions": {
"serviceBus": {
"maxConcurrentCalls": 16
}
}
}
В этой модели каждый вызов функции обрабатывает одно сообщение. Однако в зависимости от количества активных сеансов для раздела или очереди служебная шина каждый экземпляр арендует один или несколько сеансов. Конкретный параметр зависит от версии расширения служебная шина.
Измените параметрmaxConcurrentSessions
, чтобы задать целевые host.json
выполнения для каждого экземпляра, как показано в следующем примере:
{
"version": "2.0",
"extensions": {
"serviceBus": {
"maxConcurrentSessions": 8
}
}
}
В этой модели каждый вызов функции обрабатывает пакет сообщений. Конкретный параметр зависит от версии расширения служебная шина.
Измените параметрmaxMessageBatchSize
, чтобы задать целевые host.json
выполнения для каждого экземпляра, как показано в следующем примере:
{
"version": "2.0",
"extensions": {
"serviceBus": {
"maxMessageBatchSize": 1000
}
}
}
Для Центры событий Azure масштабируется Функции Azure на основе количества необработанных событий, распределенных по всем секциям в концентраторе событий. По умолчанию атрибуты, используемые для целевых выполнений для каждого экземпляра, host.json
и maxEventBatchSize
maxBatchSize
. Однако если вы решили точно настроить масштабирование на основе целевого объекта, можно определить отдельный параметр targetUnprocessedEventThreshold
, переопределяющий задание целевых выполнений на экземпляр без изменения параметров пакетной службы. Если targetUnprocessedEventThreshold
задано, общее количество необработанных событий делится на это значение, чтобы определить количество экземпляров, которое затем округляется до числа рабочих экземпляров, создающих сбалансированное распределение секций.
Ескерім
Так как Центры событий — это секционированная рабочая нагрузка, число целевых экземпляров для Центров событий ограничивается количеством секций в концентраторе событий.
Конкретный параметр зависит от версии расширения Центров событий.
Измените параметрmaxEventBatchSize
, чтобы задать целевые host.json
выполнения для каждого экземпляра, как показано в следующем примере:
{
"version": "2.0",
"extensions": {
"eventHubs": {
"maxEventBatchSize" : 100
}
}
}
При определении в host.json
качестве targetUnprocessedEventThreshold
целевых выполнений для каждого экземпляра maxEventBatchSize
используется, как показано в следующем примере:
{
"version": "2.0",
"extensions": {
"eventHubs": {
"targetUnprocessedEventThreshold": 153
}
}
}
Для расширения хранилища версии 2.x+ измените host.json
параметр batchSize
, чтобы задать целевые выполнения для каждого экземпляра:
{
"version": "2.0",
"extensions": {
"queues": {
"batchSize": 16
}
}
}
Ескерім
Эффективность масштабирования. Для расширения очереди хранилища сообщения с видимостьюTimeout по-прежнему учитываются в исходной длине событий API очереди хранилища. Это может привести к чрезмерному масштабированию приложения-функции. Рассмотрите возможность использования служебная шина очередей que запланированных сообщений, ограничения масштабирования или не использования видимостиTimeout для вашего решения.
Azure Cosmos DB использует атрибут уровня функции. MaxItemsPerInvocation
Способ установки этого атрибута уровня функции зависит от языка функции.
Для скомпилированной функции C# задайте MaxItemsPerInvocation
в определении триггера, как показано в следующих примерах для функции C# в процессе:
namespace CosmosDBSamplesV2
{
public static class CosmosTrigger
{
[FunctionName("CosmosTrigger")]
public static void Run([CosmosDBTrigger(
databaseName: "ToDoItems",
collectionName: "Items",
MaxItemsPerInvocation: 100,
ConnectionStringSetting = "CosmosDBConnection",
LeaseCollectionName = "leases",
CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
ILogger log)
{
if (documents != null && documents.Count > 0)
{
log.LogInformation($"Documents modified: {documents.Count}");
log.LogInformation($"First document Id: {documents[0].Id}");
}
}
}
}
Ескерім
Так как Azure Cosmos DB — это секционированная рабочая нагрузка, число целевых экземпляров для базы данных ограничивается количеством физических секций в контейнере. Дополнительные сведения о масштабировании Azure Cosmos DB см. в разделах физической секции и собственности на аренду.
Расширение Apache Kafka использует атрибут LagThreshold
уровня функции. Для Kafka количество требуемых экземпляров вычисляется на основе общего задержки потребителей, разделенных LagThreshold
на параметр. Для заданной задержки снижение порогового значения задержки увеличивает количество требуемых экземпляров.
Способ установки этого атрибута уровня функции зависит от языка функции. В этом примере задано пороговое значение 100
.
Для скомпилированной функции C# задайте LagThreshold
в определении триггера, как показано в следующих примерах для функции C# в процессе для триггера Центров событий Kafka:
[FunctionName("KafkaTrigger")]
public static void Run(
[KafkaTrigger("BrokerList",
"topic",
Username = "$ConnectionString",
Password = "%EventHubConnectionString%",
Protocol = BrokerProtocol.SaslSsl,
AuthenticationMode = BrokerAuthenticationMode.Plain,
ConsumerGroup = "$Default",
LagThreshold = 100)] KafkaEventData<string> kevent, ILogger log)
{
log.LogInformation($"C# Kafka trigger function processed a message: {kevent.Value}");
}
Дополнительные сведения см. в следующих разделах:
Оқиға
AI бағдарламалары мен агенттерін құру
Mar 17, 9 PM - Mar 21, 10 AM
Нақты пайдалану жағдайлары негізінде масштабты ИСК шешімдерін құру үшін стипендиаттармен және сарапшылармен кездесу сериясына қосылыңыз.
Қазір тіркелу