Prioritätsbasierte Ausführung in Azure Cosmos DB

Mit der prioritätsbasierten Ausführung können Benutzer die Priorität von Anforderungen angeben, die an Azure Cosmos DB gesendet werden. In Fällen, in denen die Anzahl der Anforderungen die Kapazität überschreitet, die innerhalb der konfigurierten Anforderungseinheiten pro Sekunde (RU/s) verarbeitet werden kann, drosselt Azure Cosmos DB Anforderungen mit niedriger Priorität, um die Ausführung von Anforderungen mit hoher Priorität zu priorisieren.

Mit diesem Feature können Benutzer kritische Aufgaben ausführen und gleichzeitig weniger wichtige Vorgänge verzögern, wenn der Gesamtverbrauch des Containers die konfigurierten RU/s in Hochlastszenarien überschreitet, indem zuerst Drosselungsmaßnahmen für Anforderungen mit niedriger Priorität implementiert werden. Jede Clientanwendung, die SDK verwendet, wiederholt Anforderungen mit niedriger Priorität gemäß der konfigurierten Wiederholungsrichtlinie.

Note

Das Feature für die prioritätsbasierte Ausführung garantiert nicht immer die Einschränkung von Anforderungen mit niedriger Priorität zugunsten von Anforderungen mit hoher Priorität. Dies funktioniert auf Best-Effort-Basis und es gibt keine SLAs, die mit der Leistung des Features verknüpft sind.

Anwendungsfälle

Sie können die prioritätsbasierte Ausführung verwenden, wenn Ihre Anwendung unterschiedliche Prioritäten für Workloads hat, die auf demselben Container ausgeführt werden. Beispiel:

  • Priorisieren von Lese-, Schreib- oder Abfragevorgängen.
  • Priorisieren von Benutzeraktionen und Hintergrundvorgängen wie
    • Gespeicherte Prozeduren
    • Erfassung/Migration von Daten

Erste Schritte

Um mit der prioritätsbasierten Ausführung zu beginnen, navigieren Sie zur Seite Features in Ihrem Azure Cosmos DB-Konto. Wählen Sie das Feature "Prioritätsbasierte Ausführung " aus, und aktivieren Sie es.

Screenshot der Funktion „Prioritätsbasierte Ausführung“ auf der Seite „Funktionen“ in einem Azure Cosmos DB-Konto

SDK-Anforderungen

  • .NET v3: v3.38.0 oder höher
  • Java v4: v4.45.0 oder höher
  • Spark 3.2: v4.19.0 oder höher
  • JavaScript v4: v4.0.0 oder höher
  • Python: v4.5.2b2 oder höher. Nur in der Vorschauversion verfügbar.

Codebeispiele

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); 

Überwachen der prioritätsbasierten Ausführung

Sie können das Verhalten von Anforderungen mit niedriger und hoher Priorität mithilfe von Azure-Monitormetriken im Azure-Portal überwachen. Weitere Informationen zu Metriken finden Sie unter Azure Monitor-Metriken.

Ändern der Standardprioritätsstufe eines Cosmos DB-Kontos

Wenn die prioritätsbasierte Ausführung aktiviert ist und die Prioritätsstufe für eine Anforderung durch den Benutzer nicht angegeben wird, werden alle diese Anforderungen mit hoher Priorität ausgeführt. Sie können die Standardprioritätsstufe von Anforderungen in einem Cosmos DB-Konto mithilfe von Azure CLI ändern.

Azure CLI

Installieren von Azure CLI, Version 2.81.0 oder höher


# 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"

Priorität des Daten-Explorers

Wenn die prioritätsbasierte Ausführung für ein Cosmos DB-Konto aktiviert ist, werden alle Anforderungen im Daten-Explorer des Azure-Portals mit niedriger Priorität ausgeführt. Sie können dies anpassen, indem Sie die Prioritätseinstellung im Menü Einstellungen des Daten-Explorers ändern.

Note

Diese clientseitige Konfiguration gilt nur für die Daten-Explorer-Ansicht des betroffenen Benutzers und wirkt sich nicht auf die Prioritätsstufe anderer Benutzer oder die Standardprioritätsstufe des Cosmos DB-Kontos aus.

Screenshot der Prioritätsebenen im Daten-Explorer eines Azure Cosmos DB-Kontos

Einschränkungen

  • Für serverlose Datenbankkonten werden derzeit die folgenden Features nicht unterstützt.
  • Das Verhalten der prioritätsbasierten Ausführungsfunktion ist für Datenbankcontainer mit gemeinsam genutztem Durchsatz nicht deterministisch.
  • Bei Konsistenzebenen mit hoher und begrenzter Veraltung funktioniert die Priorisierung von Leseanforderungen möglicherweise nicht effektiv, sodass Schreibanforderungen mit niedriger Priorität unabhängig vom Lesedatenverkehr mit hoher Priorität ausgeführt werden können.

Nächste Schritte