Auf dieser Seite werden Cloud Tasks-Aufgaben und -Warteschlangen sowie deren Verwendung beschrieben. Mit Cloud Tasks können Sie Aufgaben, die unabhängig vom Hauptanwendungsablauf ausgeführt werden können, trennen und asynchron mit von Ihnen erstellten Handlern zur Verarbeitung senden. Diese unabhängigen Aufgaben werden als Aufgaben bezeichnet. Beispielsweise müssen Sie eine Datenbank im Rahmen der Verarbeitung einer Nutzeranfrage aktualisieren, aber Aktualisierungen können zeitaufwendig sein. Wenn Sie dieses Detail als Aufgabe auslagern, können Sie schneller von der Anfrage zurückkehren.
Die ausgelagerte Aufgabe wird einer Warteschlange hinzugefügt, die die Aufgabe fortsetzt, bis sie erfolgreich ausgeführt wird. Abhängig von Ihrer Erstkonfiguration kann die Warteschlange auch als Weiterleitungsflusssteuerung dienen. Sie erstellen und konfigurieren die Warteschlange, die dann vom Cloud Tasks-Dienst verwaltet wird. Sobald Aufgaben hinzugefügt wurden, werden sie von der Warteschlange weitergeleitet und von den Mitarbeitern zuverlässig verarbeitet. Die mit diesem Prozess verbundenen Kosten, wie z. B. Kosten für die Latenz des Nutzers, Serverabstürze, Beschränkungen des Ressourcenverbrauchs und die Verwaltung von Wiederholungen, werden vom Dienst verarbeitet.
Die Aufgaben selbst bestehen aus einem eindeutigen Namen und Konfigurationsinformationen sowie optional mit den Daten aus der ersten Anfrage (Nutzlast), die zur Verarbeitung der Anfrage erforderlich sind. Wenn die Nutzlast im Anfragetext gesendet wird, müssen Aufgaben, die Nutzlasten enthalten, POST oder PUT als HTTP-Methode verwenden.
Nutzer von Laufzeiten der ersten Generation der App Engine-Standardumgebung sollten auf den Cloud Tasks-Dienst über die App Engine Task Queue API zugreifen. Weitere Informationen zur Verwendung dieser Methode finden Sie in der Dokumentation zu Java 8, Python 2.7, Go 1.11 oder PHP 5.5. Nutzer von Laufzeiten der zweiten Generation der App Engine-Standardumgebung, Nutzer der flexiblen App Engine-Umgebung und Nutzer anderer Plattformen können jetzt die Cloud Tasks API verwenden.
Für den Zugriff auf den Cloud Tasks-Dienst mit der Cloud Tasks API benötigen Sie ein Google Cloud-Projekt.
Anwendungsfälle
Zu den typischen Anwendungsfällen gehören:
- Beschleunigung von Nutzerreaktionszeiten durch Delegieren potenziell langsamer Hintergrundvorgänge wie Datenbankaktualisierungen an einen Worker
- Beibehaltung von Anfragen bei unerwarteten Vorfällen im laufenden Betrieb
- Ausgleich von Trafficspitzen durch Entfernen nicht nutzerbezogener Aufgaben aus der Hauptaufrufabfolge von Webseiten
- API-Aufrufraten von Drittanbietern verwalten
Cloud Tasks-Warteschlangen mit HTTP-Zielen
Im Fall von generischen HTTP-Zielen leitet der Cloud Tasks-Dienst die Aufgabenanfrage an den Worker weiter, der sich an einem beliebigen allgemeinen HTTP-Endpunkt befindet. Dies hängt davon ab, wie die Aufgabe konfiguriert ist. Dieser Endpunkt kann sich je nach Konfiguration der Aufgabe auf Cloud Functions, Cloud Run, GKE, Compute Engine oder sogar auf einem lokalen Webserver befinden. Diese Warteschlangen leiten Anfragen mit einer zuverlässigen, konfigurierbaren Rate weiter. Sie garantieren eine zuverlässige Aufgabenausführung: Bei Erfolg müssen alle Worker einen HTTP-Antwortcode (200-299) an den Cloud Tasks-Dienst senden, vor dem Standardzeitlimit von 10 Minuten und maximal 30 Minuten. Wird eine andere Antwort oder keine Antwort gesendet, wird die Aufgabe wiederholt.
Das Ziel muss das Skalieren von Workern und das Bereinigen von Aufgaben verwalten, sobald diese abgeschlossen sind.
Wenn für Ihr Ziel eine Authentifizierung erforderlich ist, müssen Sie zwei Dienstkonten einrichten, eines für Ihre Anwendung, den Client, und eines für die Warteschlange selbst. Beide Konten müssen die erforderlichen Berechtigungen haben. Außerdem muss eine Kennzeichnung für das Client-Dienstkonto in der Aufgabenanfrage enthalten sein. Weitere Informationen finden Sie unter HTTP-Zielaufgaben erstellen.
Cloud Tasks-Warteschlangen mit App Engine-Zielen
Im Fall von App Engine-Zielen leitet der Cloud Tasks-Dienst die Aufgabenanfrage ebenfalls an den Handler weiter. Dieser Worker befindet sich jedoch innerhalb von App Engine. Daher müssen alle Warteschlangen, die auf App Engine-Handler ausgerichtet sind, eine App Engine-Anwendung haben. Die Handler müssen in der Region ausgeführt werden, in der die App Engine-Anwendung ausgeführt wird. Diese Region dient auch als LOCATION_ID-Parameter für Ihre Cloud Tasks-Anfragen.
Die Aufgaben werden abhängig davon, wie die Aufgabe (oder, seltener) der Warteschlange selbst weitergeleitet wird, weitergeleitet. Die Warteschlangen leiten Anfragen mit einer zuverlässigen, konfigurierbaren Rate weiter. Sie garantieren eine zuverlässige Aufgabenausführung. Bei Erfolg müssen alle Worker einen HTTP-Antwortcode (200–299) an den Cloud Tasks-Dienst senden, in diesem Fall innerhalb einer Frist, die auf dem Typ der Instanzskalierung basiert: 10 Minuten für die automatische Skalierung und bis zu 24 Stunden für die manuelle Skalierung. Wird eine andere Antwort oder keine Antwort gesendet, wird die Aufgabe wiederholt.
Da die Handler Teil von App Engine sind, kann der Cloud Tasks-Dienst die Aufgabenverwaltung für die Aufgabe größtenteils übernehmen. Die Worker werden in Bezug auf den Traffic nach oben und unten skaliert und Aufgaben werden beim Löschen erledigt.
Workflows
Dies ist der allgemeine Workflow:
- Sie erstellen einen Worker, um die Aufgaben zu bearbeiten.
- Sie erstellen eine Warteschlange.
- Sie erstellen programmgesteuert Aufgaben und fügen sie zur Warteschlange hinzu.
- Der Cloud Tasks-Dienst gibt eine Bestätigung an die ursprüngliche Anwendung zurück. Diese signalisiert, dass die Aufgabe erfolgreich in den Cloud Task-Speicher geschrieben wurde. Damit ist die Anfrage zur Aufgabenerstellung hochverfügbar und langlebig.
- Die Aufgabe wird an den Worker übergeben.
- Der Worker verarbeitet die Aufgabe.
- Zum Abschließen der Sequenz gibt der Worker den Erfolgsstatuscode 2xx an den Cloud Tasks-Dienst zurück.
Sobald die Aufgabe an die Warteschlange übergeben wurde, werden der ursprünglichen Anfrage keine Daten mehr zur Verfügung gestellt.
Features
Mit Cloud Tasks können Sie asynchrone Arbeitsaufgaben mit den folgenden Steuerelementen weiterleiten:
- Bestimmte Lieferzeiten planen
- Zustellungsraten verwalten
- Wiederholungsprozess konfigurieren
- Auf einzelne Aufgaben in einer Warteschlange zugreifen und verwalten
- Deduplizierung von Aufgaben aktivieren
Nutzungsbedingungen
Die folgende Tabelle enthält wichtige Begriffe zur Beschreibung bestimmter Aspekte von Cloud Tasks.
Begriff | Definition |
---|---|
Warteschlange | Eine Reihe von Aufgaben mit demselben Zieltyp, die von einer einzelnen Konfiguration verwaltet werden. |
Zieltyp | Festlegung, wo und wie eine Aufgabe verarbeitet wird. |
Worker | Ein Dienst, der Aufgaben verarbeitet. |
Versuch | Ein Versuch, eine Aufgabe auszuführen. |
Weiterleitung | Der Zeitpunkt, an dem eine Aufgabe von Cloud Tasks an ihr Ziel gesendet wurde. |
Antwort | Eine Antwort von einem Worker, die angibt, dass die mit der Aufgabe verbundene Arbeit erfolgreich abgeschlossen wurde oder fehlgeschlagen ist. |
retry | Mehrere Versuche, eine Aufgabe auszuführen. Die Anzahl der Wiederholungen wird über die Wiederholungskonfiguration festgelegt. |
Ratenbegrenzungen | Die Ratenbegrenzungen für eine Warteschlange. |
Messwerte
Die folgenden vordefinierten Cloud Tasks-Messwerte sind über Stackdriver verfügbar.
Metriktyp Anzeigename Art, Typ, Einheit |
Beschreibung Labels |
---|---|
api/request_count API-Anfragen DELTA ,
INT64 ,
1
|
Anzahl der Cloud Tasks API-Aufrufe
api_method : Die aufgerufene API-Methode (z. B. CreateTask).
response_code : Kanonischer Antwortcode als String (z. B. "ok").
|
queue/depth BETA-Warteschlangentiefe GAUGE ,
INT64 ,
1
|
Anzahl der Aufgaben in der Warteschlange Alle 60 Sekunden wird eine Stichprobe erstellt. Nach der Stichprobe werden bis zu 120 Sekunden lang keine Daten angezeigt. |
queue/task_attempt_count Anzahl der Aufgabenversuche DELTA ,
INT64 ,
1
|
Anzahl der Aufgabenversuche aufgeschlüsselt nach Antwortcode
response_code : Kanonischer Antwortcode als String (z. B. "ok").
|
queue/task_attempt_delays Verzögerung bei Aufgabenversuch DELTA ,
DISTRIBUTION ,
ms
|
Verzögerung zwischen dem Zeitpunkt des geplanten Versuchs und des tatsächlichen Versuchs |