Auf dieser Seite wird beschrieben, wie Sie Cloud Tasks-Warteschlangen mit dem gcloud
-Befehl der Google Cloud CLI konfigurieren.
Übersicht
Sie können die Cloud Tasks-Warteschlange während ihrer Erstellung oder später konfigurieren. Die Konfiguration gilt für alle Aufgaben in dieser Warteschlange.
Beim Konfigurieren von Warteschlangen sind drei grundlegende Aspekte zu berücksichtigen:
Routing auf Warteschlangenebene
Wenn Sie das Routing auf Warteschlangenebene konfigurieren, wird das auf Aufgabenebene festgelegte Routing überschrieben. Dies ist nützlich, wenn Sie Cloud Tasks als Puffer im Vordergrund verwenden möchten. oder wenn Sie das Routing für alle Aufgaben in einem in die Warteschlange stellen.
Das Routing auf Warteschlangenebene gilt für:
- Aufgaben, die sich derzeit in der Warteschlange befinden
- Aufgaben, die der Warteschlange hinzugefügt werden, nachdem das Routing auf Warteschlangenebene festgelegt wurde
Beschränkungen
Das Routing auf Warteschlangenebene ist nicht mit vom Kunden verwalteten Verschlüsselungsschlüsseln (CMEK) des Cloud Key Management Service (Cloud KMS) kompatibel. Wenn CMEK aktiviert ist, können Sie Folgendes nicht tun:
- Aufgaben in einer Warteschlange mit Routing auf Warteschlangenebene erstellen
- Routing auf Warteschlangenebene anwenden
Routing auf Warteschlangenebene für HTTP-Aufgaben konfigurieren
Routing auf Warteschlangenebene anwenden
Sie können eine Warteschlange so konfigurieren, dass das Routing auf Aufgabenebene überschrieben wird. Das ist entweder beim Erstellen oder beim Aktualisieren der Warteschlange möglich. Wenn Sie das Routing auf Warteschlangenebene konfigurieren möchten, legen Sie den Parameter uriOverride
der Warteschlange auf die gewünschte Route fest. Wenn Sie das Routing auf Warteschlangenebene als
auf eine vorhandene Warteschlange aktualisieren, die Warteschlange anhalten, bevor die Änderungen übernommen werden, und
Warten Sie nach dem Übernehmen der Änderungen eine Minute, um die Warteschlange fortzusetzen. Es kann bis zu
bis die neue Konfiguration wirksam wird. Warten Sie daher, bis die
Die Warteschlange verhindert, dass Aufgaben mit der alten Konfiguration weitergeleitet werden.
Routing auf Warteschlangenebene aktualisieren oder entfernen
Halte die Warteschlange an.
Console
So halten Sie die Warteschlange über die Google Cloud Console an:
Öffnen Sie in der Console die Seite mit den Cloud Tasks-Warteschlangen.
Wählen Sie den Namen der Warteschlange aus, die Sie anhalten möchten, und klicken Sie auf Warteschlange anhalten.
Bestätigen Sie die Aktion.
gcloud
gcloud tasks queues pause QUEUE_ID
Ersetzen Sie
QUEUE_ID
durch die ID Ihrer Warteschlange.Aktualisieren oder entfernen Sie das Routing auf Warteschlangenebene.
Wenn Sie das Routing auf Warteschlangenebene aktualisieren möchten, legen Sie den Parameter
uriOverride
auf die aktualisierte Route fest.So entfernen Sie das Routing auf Warteschlangenebene mit der REST API oder der RPC API:
REST API:Senden Sie eine
patch
Anfrage für die Warteschlange mit leerer Nutzlast und dem ParameterupdateMask
aufhttpTarget
festgelegt.RPC API: Sende eine
updateQueueRequest
für die Warteschlange mit einer leeren Nutzlast und dem Parameterupdate_mask
aufhttp_target
.
Im folgenden Beispiel wird die REST API verwendet, um die Hostaufgaben zu aktualisieren, die weitergeleitet werden in:
curl -X PATCH -d @- -i \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ "https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID?updateMask=httpTarget.uriOverride" << EOF { "httpTarget": {"uriOverride":{"host":"NEW_HOST"}} } EOF
Ersetzen Sie Folgendes:
PROJECT_ID
: ID Ihres Google Cloud-Projekts. Führen Sie dazu in Ihrem Terminal den folgenden Befehl aus:gcloud config get-value project
LOCATION
: Der Standort Ihrer Warteschlange.QUEUE_ID
: Die ID der Warteschlange.ACCESS_TOKEN
: Ihr Zugriffstoken. Sie erhalten diese Führen Sie Folgendes in Ihrem Terminal aus:gcloud auth application-default login
gcloud auth application-default print-access-token
NEW_HOST
: Der neue Host, an den die Warteschlange weitergeleitet werden soll. an.
Warten Sie eine Minute.
Es kann bis zu einer Minute dauern, bis die neue Konfiguration wirksam wird. durch Warten auf das Fortsetzen der Warteschlange. So wird verhindert, dass Aufgaben mit der alten Konfiguration.
Warteschlange fortsetzen
Console
So setzen Sie die Warteschlange mithilfe der Google Cloud Console fort:
Öffnen Sie in der Console die Seite mit den Cloud Tasks-Warteschlangen.
Wählen Sie den Namen der Warteschlange aus, die Sie anhalten möchten, und klicken Sie auf Warteschlange fortsetzen.
Bestätigen Sie die Aktion.
gcloud
gcloud tasks queues resume QUEUE_ID
Ersetzen Sie
QUEUE_ID
durch die ID Ihrer Warteschlange.
Routing auf Warteschlangenebene für App Engine-Aufgaben konfigurieren
Um das Routing auf Warteschlangenebene für App Engine-Aufgaben zu konfigurieren, legen Sie die
appEngineRoutingOverride
in Ihren bevorzugten App Engine-Dienst und Ihre bevorzugte App Engine-Version ein.
So richten Sie dieses nicht standardmäßige Routing auf Warteschlangenebene ein und überschreiben alle Routingvorgänge auf Aufgabenebene:
gcloud tasks queues update QUEUE_ID\ --routing-override=service:SERVICE,version:VERSION
Ersetzen Sie Folgendes:
SERVICE
: der für die Aufgabenverarbeitung zuständige App Engine-Worker-Dienst.VERSION
: die App-Version.
Wenn Sie beispielsweise einen Worker-Dienst SERVICE einrichten, um alle Aufgaben in einer Warteschlange zu verarbeiten, können Sie mit dem folgenden Befehl das Routing an diesen Dienst und die Standardversion konfigurieren:
gcloud tasks queues update QUEUE_ID \ --routing-override=service:SERVICE
Beschreiben Sie die Warteschlange:
gcloud tasks queues describe QUEUE_ID --location=LOCATION
Ersetzen Sie Folgendes:
QUEUE_ID
: die Warteschlangen-ID (kurzer Name)LOCATION
: Speicherort der Warteschlange
Die Ausgabe sollte etwa so aussehen:
appEngineRoutingOverride: host: SERVICE.PROJECT_ID.appspot.com service: SERVICE name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
Routing auf Warteschlangenebene für App Engine-Ziele entfernen
Wenn das Routing auf Warteschlangenebene entfernt wird, gilt das Routing auf Aufgabenebene sowohl für Aufgaben die sich derzeit in der Warteschlange befinden, und Aufgaben, die der Warteschlange in Zukunft hinzugefügt werden. Führen Sie den folgenden Befehl aus, um das Routing auf Warteschlangenebene zu entfernen:
gcloud tasks queues update QUEUE_ID \ --clear-routing-override
Definieren Sie Ratenlimits
Sie können die maximale Rate und die Anzahl gleichzeitiger Aufgaben festlegen, die von einer Warteschlange weitergeleitet werden können.
gcloud tasks queues update QUEUE_ID \ --max-dispatches-per-second=DISPATCH_RATE \ --max-concurrent-dispatches=MAX_RUNNING
Ersetzen Sie Folgendes:
DISPATCH_RATE
: die Weiterleitungsrate (dies ist Die Rate, mit der Tokens im Bucket aktualisiert werden). Bei Bedingungen mit einem relativ gleichmäßigen Aufgabenfluss entspricht dies der Rate, mit der Aufgaben weitergeleitet werden.MAX_RUNNING
: die maximale Anzahl von Aufgaben in der Warteschlange die gleichzeitig ausgeführt werden können.
Wenn Sie beispielsweise eine Warteschlange erstellt haben, ohne Parameter festzulegen, können Sie die maximale Anzahl gleichzeitiger Aufgaben durch den Aufruf von
gcloud tasks queues update QUEUE_ID \ --max-concurrent-dispatches=MAX_CONCURRENT_DISPATCHES
Describe
die Warteschlange:
gcloud tasks queues describe QUEUE_ID --location=LOCATION
Ersetzen Sie Folgendes:
QUEUE_ID
: die Warteschlangen-ID (kurzer Name)LOCATION
: Speicherort der Warteschlange
Die Ausgabe sollte wie folgt aussehen:
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID rateLimits: maxBurstSize: 100 maxConcurrentDispatches: MAX_CONCURRENT_DISPATCHES maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
Verarbeitungsraten mit gcloud
-Befehlen im Vergleich zu queue.yaml
definieren
Der Cloud Tasks API-Ansatz zum Definieren von Verarbeitungsraten für Warteschlangen unterscheidet sich geringfügig vom Upload von queue.yaml
-Dateien, obwohl beide Methoden zu Warteschlangen mit demselben zugrunde liegenden Mechanismus führen.
In beiden Fällen verwendet die Warteschlange den Token-Bucket-Algorithmus, um die Rate der Aufgabenausführung zu steuern. Jede benannte Warteschlange hat einen Bucket mit den zugehörigen Tokens.
Jedes Mal, wenn Ihre Anwendung eine Aufgabe ausführt, wird ein Token aus dem Bucket entfernt.
Die Warteschlange verarbeitet weiterhin Aufgaben, bis keine Tokens mehr im Bucket vorhanden sind. Das System füllt den Bucket auf der Grundlage der max_dispatches_per_second
-Rate, die Sie für die Warteschlange festlegen, kontinuierlich mit neuen Tokens auf. Wenn Ihre Warteschlange zu verarbeitende Aufgaben und der Bucket der Warteschlange Tokens enthält, verarbeitet das System gleichzeitig dieselbe Anzahl von Aufgaben und Tokens bis zu dem von Ihnen festgelegten Wert max_concurrent_dispatches
.
Ein ungleichmäßiger Ladevorgang kann dazu führen, dass die Anzahl der Tokens im Bucket erheblich anwächst, was zu Bursts der Verarbeitung führen kann, wenn dann eine Reihe von Anfragen eingeht. In diesem Fall kann die Warteschlange eine tatsächliche Weiterleitungsrate aufweisen, die Ihre max_dispatches_per_second
-Rate übersteigt, Systemressourcen verbraucht und mit Anfragen zur Nutzerverwaltung konkurriert. In Fällen, in denen Sie Warteschlangen zur Verwaltung von Weiterleitungsraten auf der Grundlage von relativ langsamen SLAs für nachgelagerte Dienste verwenden, kann dies zu HTTP-Fehlern wie 429
(zu viele Anfragen) oder 503
(Dienst nicht verfügbar) führen.
Wenn Sie eine Cloud Tasks API-Methode verwenden, haben Sie zwei Felder, um die Warteschlangen-Weiterleitungsrate zu definieren:
max_dispatches_per_second
max_concurrent_dispatches
Ein drittes Feld, max_burst_size
, wird vom System auf der Grundlage des Werts berechnet, den Sie für max_dispatches_per_second
festgelegt haben.
Wenn Sie die Methode queue.yaml
verwenden, können Sie alle drei Elemente festlegen:
max_concurrent_requests
, wasmax_concurrent_dispatches
entsprichtrate
, wasmax_dispatches_per_second
entsprichtbucket_size
, wasmax_burst_size
entspricht
In den meisten Fällen führt die Verwendung der Cloud Tasks API-Methode und die Einstellung des Systems auf max_burst_size
zu einer sehr effizienten Rate für die Verwaltung von Anfrage-Bursts. In einigen Fällen, insbesondere wenn die gewünschte Rate relativ langsam ist, können Sie jedoch entweder bucket_size
mit der Methode queue.yaml
manuell auf einen kleinen Wert setzen oder max_concurrent_dispatches
über die Cloud Tasks API auf einen kleinen Wert festlegen, um so mehr Kontrolle zu erhalten.
Wiederholungsparameter festlegen
Wenn eine Aufgabe nicht erfolgreich abgeschlossen wurde, wiederholt Cloud Tasks die Aufgabe mit exponentiellem Backoff gemäß den von Ihnen festgelegten Parametern. Sie können die maximale Anzahl der Wiederholungen von fehlgeschlagenen Warteschlangenaufgaben, ein Zeitlimit für Wiederholungsversuche und das Intervall zwischen den Versuchen festlegen.
gcloud tasks queues update QUEUE_ID \ --max-attempts=MAX_ATTEMPTS \ --min-backoff=MIN_INTERVAL \ --max-backoff=MAX_INTERVAL \ --max-doublings=MAX_DOUBLINGS \ --max-retry-duration=MAX_RETRY_DURATION
Ersetzen Sie Folgendes:
MAX_ATTEMPTS
: die maximale Anzahl der Versuche für eine Aufgabe, einschließlich beim ersten Versuch. Sie können unbegrenzte Wiederholungen zulassen, indem Sie dieses Flag aufunlimited
festlegen.MIN_INTERVAL
: Die Mindestwartezeit zwischen Wiederholungsversuchen. Der Wert muss ein String sein, der mit "s" endet, zum Beispiel5s
.MAX_INTERVAL
: die maximale Wartezeit zwischen Wiederholungsversuchen. Der Wert muss ein String sein, der mit „s“ endet, z. B.5s
.MAX_DOUBLINGS
: Die maximale Häufigkeit, mit der das Intervall zwischen fehlgeschlagenen Aufgabenwiederholungen verdoppelt wird, bevor die Erhöhung konstant wird.MAX_RETRY_DURATION
: die maximale Zeit für Wiederholen einer fehlgeschlagenen Aufgabe, gemessen ab dem Zeitpunkt, an dem die Aufgabe zum ersten Mal versucht wurde. Die "value" muss ein String sein, der mit "s" endet. wie5s
.
Prüfen Sie, ob die Warteschlange erfolgreich konfiguriert wurde:
gcloud tasks queues describe QUEUE_ID --location=LOCATION
Ersetzen Sie Folgendes:
QUEUE_ID
: die Warteschlangen-ID (kurzer Name)LOCATION
: Speicherort der Warteschlange
Nächste Schritte
- Weitere Informationen zum Erstellen von HTTP-Zielaufgaben
- Mehr über das Erstellen von App Engine-Aufgaben erfahren
- Weitere Informationen zum Einrichten von Cloud Logging
- Weitere Informationen zur Warteschlangenverwaltung finden Sie in der Referenz zur RPC API.
- Weitere Informationen zur Warteschlangenverwaltung finden Sie in der Referenz zur REST API.
- Eine vollständige Liste der Cloud Tasks
gcloud
-Befehle