Ejecución basada en prioridad en Azure Cosmos DB

La ejecución basada en Prioridad permite a los usuarios especificar la prioridad de las solicitudes enviadas a Azure Cosmos DB. En los casos en los que el número de solicitudes supera la capacidad que se puede procesar dentro de las Unidades de solicitud configuradas por segundo (RU/s), Azure Cosmos DB limita las solicitudes de prioridad baja para priorizar la ejecución de solicitudes de prioridad alta.

Esta característica permite a los usuarios ejecutar tareas críticas mientras se retrasan tareas menos importantes cuando el consumo total del contenedor supera las RU/s configuradas en casos de alta carga mediante la implementación de medidas de limitación para las solicitudes de prioridad baja en primer lugar. Cualquier aplicación cliente que utilice el SDK reintentará las solicitudes de baja prioridad de acuerdo con la directiva de reintentos configurada.

Note

La característica de ejecución basada en prioridad no garantiza que siempre se limiten las solicitudes de prioridad baja en favor de las de prioridad alta. Esto opera bajo un enfoque de mejor esfuerzo y no hay acuerdos de nivel de servicio vinculados al rendimiento de la funcionalidad.

Casos de uso

Puede usar la ejecución basada en prioridades cuando la aplicación tenga prioridades diferentes para las cargas de trabajo que se ejecutan en el mismo contenedor. Por ejemplo

  • Establecer prioridades para las operaciones de lectura, escritura o consulta.
  • Establecer prioridades para las acciones de usuario frente a las operaciones en segundo plano, como:
    • Procedimientos almacenados
    • Ingesta de datos o migración

Cómo empezar

Para empezar a usar la ejecución basada en prioridad, vaya a la página Características de la cuenta de Azure Cosmos DB. Seleccione y habilite la característica de ejecución basada en prioridad .

Captura de pantalla de la característica de ejecución basada en prioridad en la página Características de una cuenta de Azure Cosmos DB.

Requisitos del SDK

  • .NET v3: v3.38.0 o posterior
  • Java v4: v4.45.0 o posterior
  • Spark 3.2: v4.19.0 o posterior
  • JavaScript v4: v4.0.0 o posterior
  • Python: v4.5.2b2 o posterior. Solo está disponible en la versión preliminar.

Ejemplos de código

using Microsoft.Azure.Cosmos;

//update products catalog with low priority
RequestOptions catalogRequestOptions = new ItemRequestOptions{PriorityLevel = PriorityLevel.Low}; 

PartitionKey pk = new PartitionKey(“productId1”); 
ItemResponse<Product> catalogResponse = await this.container.CreateItemAsync<Product>(product1, pk, requestOptions); 

//Display product information to user with high priority
RequestOptions getProductRequestOptions = new ItemRequestOptions{PriorityLevel = PriorityLevel.High}; 

string id = “productId2”; 
PartitionKey pk = new PartitionKey(id); 

ItemResponse<Product> productResponse = await this.container.ReadItemAsync< Product>(id, pk, getProductRequestOptions); 

Supervisión de la ejecución basada en prioridad

Puede supervisar el comportamiento de las solicitudes con prioridad baja y alta mediante métricas de Azure Monitor en Azure Portal. Para obtener más información sobre las métricas, consulte Métricas de Azure Monitor.

Cambio del nivel de prioridad predeterminado de una cuenta de Cosmos DB

Si la Ejecución basada en prioridad está habilitada y el nivel de prioridad no se especifica para una solicitud por parte del usuario, todas estas solicitudes se ejecutan con prioridad alta. Puede cambiar el nivel de prioridad predeterminado de las solicitudes en una cuenta de Cosmos DB con la CLI de Azure.

CLI de Azure

Instalación de la CLI de Azure versión 2.81.0 o posterior


# set subscription context
az account set -s $SubscriptionId

# Enable priority-based execution
az cosmosdb update `
  -g <resource-group> `
  -n <account-name> `
  --enable-priority-based-execution true

# change default priority level
az cosmosdb update `
  -g <resource-group> `
  -n <account-name> `
  --default-priority-level low

Azure PowerShell


# Install module Az.CosmosDB 1.19.0 or later

Install-Module -Name Az.CosmosDB -Force

# Login and Set Subscription

Connect-AzAccount
Set-AzContext -Subscription <subscription-id>

# Enable Priority Based Execution

Update-AzCosmosDBAccount `
  -ResourceGroupName "<resource-group>" `
  -Name "<account-name>" `
  -EnablePriorityBasedExecution $true

# Set Default Priority Level

Update-AzCosmosDBAccount `
  -ResourceGroupName "<resource-group>" `
  -Name "<account-name>" `
  -DefaultPriorityLevel "Low"

Prioridad del explorador de datos

Cuando la ejecución basada en prioridad está habilitada para una cuenta de Cosmos DB, todas las solicitudes del Explorador de datos de Azure Portal se ejecutan con prioridad baja. Para ajustarlo, cambie la configuración de prioridad en el menú Configuracióndel Explorador de datos.

Note

Esta configuración del lado cliente es específica de la vista Explorador de datos del usuario interesado y no afectará al nivel de prioridad del Explorador de datos de otros usuarios ni al nivel de prioridad predeterminado de la cuenta de Cosmos DB.

Captura de pantalla de los niveles de prioridad en el Explorador de datos de una cuenta de Azure Cosmos DB.

Limitaciones

  • La ejecución basada en prioridad no se admite actualmente para cuentas de base de datos sin servidor.
  • El comportamiento de la característica de ejecución basada en prioridad no es determinante para los contenedores de base de datos de rendimiento compartido.
  • En el caso de los niveles de coherencia de obsolescencia fuerte y limitada, la priorización de solicitudes de lectura puede no funcionar eficazmente, lo cual permite que las solicitudes de escritura de prioridad baja se ejecuten independientemente del tráfico de lectura de prioridad alta.

Pasos siguientes