Freigeben über


Prioritätsbasierte Ausführung in Azure Cosmos DB (Vorschau)

GILT FÜR: NoSQL

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.

Hinweis

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 nach dem Prinzip „beste Leistung“, und es gibt keine SLA,die mit der Leistung des Features verknüpft ist.

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. Zum 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 (Vorschau) aus, und aktivieren Sie es.

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

SDK-Anforderungen

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-Befehlszeilenschnittstelle (Azure CLI)

# install preview Azure CLI version 0.26.0 or later
az extension add --name cosmosdb-preview --version 0.26.0

# set subscription context
az account set -s $SubscriptionId

# Enable priority-based execution
az cosmosdb update  --resource-group $ResourceGroup --name $AccountName --enable-priority-based-execution true

# change default priority level
az cosmosdb update  --resource-group $ResourceGroup --name $AccountName --default-priority-level 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.

Hinweis

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.

Bekannte Probleme

  • 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