In diesem Dokument wird beschrieben, wie Sie Probleme mit der Konsistenz, Replikationsverzögerungen und dem Verhalten von Kontingentmesswerten beheben, wenn Sie globale Ressourcen über Compute Engine-API-Endpunkte für regionale Ansichten abfragen. Weitere Informationen zu regionalisierten Endpunkten mit Lesezugriff finden Sie unter Regionale Ansichten globaler Ressourcen.
Replikationsverzögerungen oder fehlende Ressourcen
Wenn Sie regionale Metadatenendpunkte abfragen, stellen Sie möglicherweise fest, dass neu erstellte globale Ressourcen oder kürzlich aktualisierte Metadatenfelder nicht sofort in regionalen Antworten angezeigt werden.
Regionale Ansichts-APIs verarbeiten Leseanfragen, indem sie ein regionales Replikat mit Lesezugriff der zentralen globalen Datenbank abfragen. Aktualisierungen, die an primären globalen Ressourcen mit standardmäßigen globalen Endpunkten vorgenommen werden, werden asynchron in diese regionalen Replikate repliziert.
Diese asynchrone Replikation bedeutet, dass regionale Ansichten Eventual Consistency sind. Die P99-Replikationslatenz von der zentralen globalen Datenbank zu regionalen Replikaten liegt in der Regel unter 60 Sekunden.
Lösung: Versuchen Sie Folgendes, um dieses Problem zu beheben:
- Auf Replikation warten: Die meisten Replikationsaktualisierungen werden innerhalb von 60 Sekunden abgeschlossen. Wenn ein automatisiertes Skript oder eine Clientarbeitslast eine neu erstellte Ressource abfragt, muss Ihr Client eine Wiederholungslogik mit exponentiellem Backoff implementieren.
- Transparenter Fallback: Wenn eine explizite
GETAnfrage für eine bestimmte Ressourcen-ID, die auf ein regionales Replikat ausgerichtet ist, zu einem Cache Fehler führt, versucht Compute Engine automatisch einen Fallback-Lesevorgang für die zentrale globale Datenbank innerhalb derselben Transaktion. - Globale Endpunkte für starke Konsistenz abfragen: Wenn Ihre Bereitstellung
pipeline eine sofortige Read-after-Write-Konsistenz ohne
Replikationslatenz erfordert, fragen Sie direkt kanonische globale Endpunkte anstelle von
regionalen Ansichten ab. Fragen Sie beispielsweise
projects.get,images.getoderimages.listab.
404 Not Found-Antworten
Möglicherweise erhalten Sie den HTTP-Statuscode 404 Not Found, wenn Sie versuchen, ein bestimmtes Image oder eine bestimmte Projektansicht abzurufen.
Ein 404 Not Found-Fehler kann folgende Ursachen haben:
- Die Zielressource ist in der zentralen globalen Datenbank nicht vorhanden.
- Die Zielressource wurde in den letzten Sekunden erstellt, die Replikation zum regionalen Replikat ist noch nicht abgeschlossen und die transparente Fallback-Anfrage an die zentrale globale Datenbank hat das Zeitlimit überschritten oder ist fehlgeschlagen.
- Sie haben in der Anfrage-URL einen ungültigen Parameter für die Region oder eine ungültige Projekt-ID angegeben.
Lösung: Versuchen Sie Folgendes, um dieses Problem zu beheben:
- Prüfen Sie, ob die angeforderte Ressource global vorhanden ist, indem Sie eine standardmäßige
globale
describeoderlistAnfrage ausführen, z. B.gcloud compute images describe IMAGE_NAMEodergcloud compute project-info describe --project=PROJECT_ID. - Prüfen Sie den URL-Pfad der Anfrage, um sicherzustellen, dass der String
REGIONgültig und aktiv ist. - Wenn die Ressource neu erstellt wurde, wiederholen Sie die Anfrage nach 60 Sekunden.
Fehlendes quota-Array in projectViews-Antworten
Wenn Sie eine compute.Project-Ressource mit regionalen projectViews.get-Endpunkten abfragen, wird das quota-Array aus der Antwort ausgeschlossen.
Um die regionale Fehlerisolation und Hochverfügbarkeit aufrechtzuerhalten, liest der projectViews-Endpunkt ausschließlich aus dem regionalen Replikat. Da keine regionsübergreifenden Fanouts ausgeführt werden, um die Kontingentnutzung in allen Zonen zu erfassen, wird das quota-Array ausgeschlossen.
Lösung: So beheben Sie das Problem:
- Achten Sie darauf, dass Ihre Anwendungen das
quota-Array nicht in Antworten erwarten, die von regionalenprojectViews-Endpunkten zurückgegeben werden. - Wenn Sie eine genaue Kontingentkonfiguration und Echtzeit-Nutzungsmesswerte für alle
Regionen und Zonen abrufen möchten, fragen Sie den globalen
projects.get-Endpunkt ab oder beobachten Sie die Compute Engine API-Kontingentmesswerte in Cloud Monitoring.
Nächste Schritte
- Informationen unter Regionale Ansichten für robuste Lesevorgänge in der Steuerungsebene verwenden.
- Informationen unter Regional auf globale Ressourcen zugreifen, um Hochverfügbarkeit zu erzielen.