Viele Anwendungen müssen eine Hintergrundverarbeitung außerhalb des Kontexts einer Webanfrage ausführen. In dieser Anleitung wird eine Webanwendung erstellt, mit der Nutzer Text eingeben können, der übersetzt werden soll. Anschließend wird eine Liste früherer Übersetzungen angezeigt. Die Übersetzung erfolgt in einem Hintergrundprozess, um die Anfrage des Nutzers nicht zu blockieren.
Das folgende Diagramm veranschaulicht den Ablauf der Übersetzungsanfrage.
Wie die in dieser Anleitung verwendete Anwendung funktioniert, sehen Sie an der Abfolge der Ereignisse:
- Sie rufen die Webseite auf, um sich eine Liste früherer, in Firestone gespeicherter Übersetzungen anzeigen zu lassen.
- Sie fordern die Übersetzung eines Textes an. Dazu füllen Sie ein HTML-Formular aus.
- Die Übersetzungsanfrage wird in Pub/Sub veröffentlicht.
- Ein Cloud Run-Dienst, der dieses Pub/Sub-Thema abonniert hat, wird ausgelöst.
- Der Cloud Run-Dienst übersetzt den Text mit Cloud Translation.
- Der Cloud Run-Dienst speichert das Ergebnis in Firestore.
Diese Anleitung richtet sich an alle, die mehr über die Hintergrundverarbeitung mit Google Cloud erfahren möchten. Es sind keine Vorkenntnisse in Pub/Sub, Firestore oder Cloud Run erforderlich. Um den gesamten Code zu verstehen, ist allerdings etwas Erfahrung mit Java und HTML hilfreich.
Lernziele
- Cloud Run-Dienst verstehen und bereitstellen
- Anwendung testen
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Pub/Sub, and Cloud Translation APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Pub/Sub, and Cloud Translation APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Aktualisieren Sie die
gcloud
-Komponenten:gcloud components update
- Bereiten Sie die Entwicklungsumgebung vor.
Anwendung vorbereiten
Klonen Sie das Beispiel-App-Repository in Ihrem Terminalfenster auf Ihren lokalen Computer:
git clone https://github.com/GoogleCloudPlatform/getting-started-java.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Wechseln Sie in das Verzeichnis, das den Beispielcode für die Hintergrundverarbeitung enthält:
cd getting-started-java/background
Informationen zur Anwendung
Zur Webanwendung gehören zwei Hauptkomponenten:
- Ein Java-HTTP-Server für Webanfragen. Der Server hat die folgenden beiden Endpunkte:
/translate
GET
(mithilfe eines Webbrowsers): Zeigt die 10 zuletzt verarbeiteten Übersetzungsanfragen an, die von Nutzern gesendet wurden.POST
(mit einem Pub/Sub-Abo): Verarbeitet Übersetzungsanfragen mithilfe der Cloud Translation API und speichert die Ergebnisse in Firestore.
/create
: Das Formular zum Senden neuer Übersetzungsanfragen.
- Dienst-Clients, die die vom Webformular übermittelten Übersetzungsanfragen verarbeiten. Es gibt drei Clients, die zusammenarbeiten:
- Pub/Sub: Wenn das Webformular von einem Nutzer gesendet wird, veröffentlicht der Pub/Sub-Client eine Nachricht mit den Anfragedetails. Ein in diesem Lernprogramm erstelltes Abo leitet diese Nachrichten an den Cloud Run-Endpunkt weiter, den Sie zum Ausführen von Übersetzungen erstellen.
- Übersetzung: Dieser Client verarbeitet Pub/Sub-Anfragen durch Ausführen der Übersetzungen.
- Firestore: Wenn die Übersetzung abgeschlossen ist, speichert dieser Client die Anfragedaten zusammen mit der Übersetzung in Firestore. Dieser Client liest auch die neuesten Anfragen auf dem Hauptendpunkt
/translate
.
Informationen zum Cloud Run-Code
Die Cloud Run-Anwendung ist abhängig von Firestore, Translation und Pub/Sub.
Die globalen Firestore-, Übersetzer- und Pub/Sub-Clients werden initialisiert, damit sie zwischen Aufrufen wiederverwendet werden können. Auf diese Weise müssen Sie nicht bei jedem Aufruf neue Clients initialisieren, was die Ausführung verlangsamen würde.
Der Index-Handler (
/
) ruft alle vorhandenen Übersetzungen aus Firestore ab und füllt eine HTML-Vorlage mit der Liste aus:Neue Übersetzungen werden durch Senden eines HTML-Formulars angefordert. Der Handler für Übersetzungsanfragen, der unter
/create
registriert ist, parst das gesendete Formular, validiert die Anfrage und veröffentlicht eine Nachricht in Pub/Sub:Das von Ihnen erstellte Pub/Sub-Abo leitet diese Anfragen an den Cloud Run-Endpunkt weiter, der die Pub/Sub-Nachricht analysiert, um den zu übersetzenden Text und die gewünschte Zielsprache zu erhalten. Die Translation API übersetzt den String in die von Ihnen ausgewählte Sprache.
Die Anwendung speichert die Übersetzungsdaten in einem neuen Dokument, das sie in Firestore erstellt.
Cloud Run-App bereitstellen
Wählen Sie einen Pub/Sub-Topic-Namen und generieren Sie ein Pub/Sub-Verifikations-Token mit
uuidgen
oder einem Online-UUID-Generator wie uuidgenerator.net. Dieses Token stellt sicher, dass der Cloud Run-Endpunkt nur Anfragen aus dem von Ihnen erstellten Pub/Sub-Abo akzeptiert.export PUBSUB_TOPIC=background-translate export PUBSUB_VERIFICATION_TOKEN=your-verification-token
Pub/Sub-Thema erstellen:
gcloud pubsub topics create $PUBSUB_TOPIC
- Ersetzen Sie
MY_PROJECT
in der Dateipom.xml
durch Ihre Cloud-Projekt-ID.
- Ersetzen Sie
Erstellen Sie mit dem Maven-Plug-in Jib ein Image Ihres Codes und stellen Sie es in GCR (Image-Repository) bereit.
mvn clean package jib:build
Stellen Sie die Anwendung für Cloud Run bereit:
gcloud run deploy background --image gcr.io/MY_PROJECT/background \ --platform managed --region us-central1 --memory 512M \ --update-env-vars PUBSUB_TOPIC=$PUBSUB_TOPIC,PUBSUB_VERIFICATION_TOKEN=$PUBSUB_VERIFICATION_TOKEN
Dabei ist
MY_PROJECT
der Name des von Ihnen erstellten Cloud-Projekts. Dieser Befehl gibt den Endpunkt aus, an den Ihr Pub/Sub-Abo Übersetzungsanfragen sendet. Notieren Sie sich diesen Endpunkt, da Sie ihn zum Erstellen des Pub/Sub-Abos benötigen und Sie den Endpunkt in einem Browser aufrufen, um eine neue Übersetzung anzufordern.
Anwendung testen
Nachdem Sie den Cloud Run-Dienst bereitgestellt haben, versuchen Sie, eine Übersetzung anzufordern.
Um die Anwendung in Ihrem Browser anzuzeigen, rufen Sie den zuvor erstellten Cloud Run-Endpunkt auf.
Sie sehen eine Seite mit einer leeren Liste von Übersetzungen und einem Formular zum Anfordern neuer Übersetzungen.
Klicken Sie auf + Übersetzung anfordern, füllen Sie das Anfrageformular aus und klicken Sie dann auf Senden.
Dadurch werden Sie automatisch zum
/translate
-Pfad zurückgeleitet, die neue Übersetzung wird möglicherweise noch nicht angezeigt. Klicken Sie zum Aktualisieren der Seite auf Aktualisieren refresh. Die Übersetzungsliste enthält jetzt eine neue Zeile. Wenn Sie keine Übersetzung sehen, warten Sie einige Sekunden und versuchen es dann noch einmal. Ist immer noch keine Übersetzung zu sehen, lesen Sie den nächsten Abschnitt zum Debugging der Anwendung.
Fehler in der Anwendung beheben
Wenn Sie keine Verbindung zu Ihrem Cloud Run-Dienst herstellen können oder keine neuen Übersetzungen sehen, prüfen Sie Folgendes:
Prüfen Sie, ob der Befehl
gcloud run deploy
erfolgreich ausgeführt wurde und keine Fehler ausgegeben hat. Wenn Fehler aufgetreten sind (z. B.message=Build failed
), beheben Sie diese und versuchen Sie es noch einmal.Prüfen Sie die Logs auf Fehler:
Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf.
Klicken Sie auf den Dienstnamen,
background
.Klicken Sie auf Logs.
Bereinigen
Projekt löschen
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Cloud Run-Dienste löschen.
Löschen Sie die Cloud Run-Dienste, die Sie in dieser Anleitung erstellt haben:
gcloud run services delete --region=$region background
Weitere Informationen
- Weitere Informationen zu Cloud Run
- Cloud Run testen, um zustandslose Container in einer vollständig verwalteten Umgebung oder im eigenen Google Kubernetes Engine-Cluster auszuführen