אפליקציות רבות צריכות לבצע עיבוד ברקע מחוץ להקשר של בקשת אינטרנט. במדריך הזה יוצרים אפליקציית אינטרנט שמאפשרת למשתמשים להזין טקסט לתרגום, ואז מציגה רשימה של תרגומים קודמים. התרגום מתבצע בתהליך ברקע כדי למנוע חסימה של בקשת המשתמש.
התרשים הבא מדגים את תהליך בקשת התרגום.
כך פועלת אפליקציית המדריך:
- עוברים לדף האינטרנט כדי לראות רשימה של תרגומים קודמים, שמאוחסנים ב-Firestore.
- שליחת בקשה לתרגום טקסט באמצעות הזנת טופס HTML.
- בקשת התרגום מתפרסמת ב-Pub/Sub.
- מופעל שירות Cloud Run שנרשם לנושא Pub/Sub.
- השירות Cloud Run משתמש ב-Cloud Translation כדי לתרגם את הטקסט.
- שירות Cloud Run שומר את התוצאה ב-Firestore.
המדריך הזה מיועד לכל מי שרוצה ללמוד על עיבוד ברקע באמצעות Google Cloud. לא נדרש ניסיון קודם ב-Pub/Sub, ב-Firestore או ב-Cloud Run. עם זאת, כדי להבין את כל הקוד, כדאי שיהיה לכם ניסיון מסוים ב-Java וב-HTML.
מטרות
- הסבר על שירות Cloud Run ופריסה שלו.
- אפשר לנסות את האפליקציה.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
בעזרת מחשבון העלויות אתם יכולים להעריך את העלויות בהתאם לשימוש הצפוי.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore, Pub/Sub, and Cloud Translation APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore, Pub/Sub, and Cloud Translation APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
מעדכנים את הרכיבים של
gcloud:gcloud components update
- מכינים את סביבת הפיתוח.
הכנת האפליקציה
בחלון הטרמינל, משכפלים את מאגר האפליקציות לדוגמה למכונה המקומית:
git clone https://github.com/GoogleCloudPlatform/getting-started-java.git
אפשר גם להוריד את הדוגמה כקובץ ZIP ולחלץ אותו.
עוברים לספרייה שמכילה את הקוד לדוגמה של עיבוד ברקע:
cd getting-started-java/background
הסבר על האפליקציה
אפליקציית האינטרנט מורכבת משני רכיבים עיקריים:
- שרת HTTP של Java לטיפול בבקשות לאחזור מהרשת. לשרת יש שתי נקודות קצה:
/translate-
GET(באמצעות דפדפן אינטרנט): מוצגות 10 בקשות התרגום האחרונות שמשתמשים שלחו ועברו עיבוד. -
POST(עם מינוי ל-Pub/Sub): מעבדת בקשות תרגום באמצעות Cloud Translation API ושומרת את התוצאות ב-Firestore.
-
-
/create: הטופס לשליחת בקשות תרגום חדשות.
- לקוחות שירות שמעבדים את בקשות התרגום שנשלחות דרך הטופס באינטרנט. יש שלושה לקוחות שעובדים ביחד:
- Pub/Sub: כשהמשתמש שולח את הטופס באינטרנט, לקוח Pub/Sub מפרסם הודעה עם פרטי הבקשה. מינוי שנוצר במדריך הזה מעביר את ההודעות האלה לנקודת הקצה של Cloud Run שיוצרים כדי לבצע תרגומים.
- תרגום: הלקוח הזה מטפל בבקשות Pub/Sub על ידי ביצוע התרגומים.
- Firestore: כשהתרגום מסתיים, הלקוח הזה מאחסן את נתוני הבקשה יחד עם התרגום ב-Firestore. הלקוח הזה קורא גם את הבקשות האחרונות בנקודת הקצה הראשית
/translate.
הסבר על הקוד של Cloud Run
לאפליקציה ב-Cloud Run יש תלות ב-Firestore, Translation ו-Pub/Sub.
הלקוחות הגלובליים של Firestore, Translation ו-Pub/Sub מאותחלים כדי שאפשר יהיה להשתמש בהם מחדש בין הפעלות. כך לא תצטרכו לאתחל לקוחות חדשים בכל הפעלה, מה שיאט את הביצוע.
ה-handler של האינדקס (
/) מקבל את כל התרגומים הקיימים מ-Firestore וממלא תבנית HTML ברשימה:כדי לבקש תרגומים חדשים, שולחים טופס HTML. הבקשה מטפלת בתרגום, רשומה ב-
/create, מנתחת את הטופס שנשלח, מאמתת את הבקשה ומפרסמת הודעה ב-Pub/Sub:המינוי ל-Pub/Sub שאתם יוצרים מעביר את הבקשות האלה לנקודת הקצה של Cloud Run, שמנתחת את ההודעה של Pub/Sub כדי לקבל את הטקסט לתרגום ואת שפת היעד הרצויה. לאחר מכן, Translation API מתרגם את המחרוזת לשפה שבחרתם.
האפליקציה מאחסנת את נתוני התרגום במסמך חדש שהיא יוצרת ב-Firestore.
פריסת האפליקציה של Cloud Run
בוחרים שם לנושא Pub/Sub ויוצרים אסימון אימות של Pub/Sub באמצעות
uuidgenאו מחולל UUID אונליין כמו uuidgenerator.net. האסימון הזה יבטיח שנקודת הקצה של Cloud Run תקבל רק בקשות מהמינוי ל-Pub/Sub שתיצרו.export PUBSUB_TOPIC=background-translate export PUBSUB_VERIFICATION_TOKEN=your-verification-token
יוצרים נושא Pub/Sub:
gcloud pubsub topics create $PUBSUB_TOPIC- מחליפים את
MY_PROJECTבקובץpom.xmlבמזהה הפרויקט ב- Google Cloud .
- מחליפים את
יוצרים קובץ אימג' של הקוד ופורסים אותו ב-GCR (מאגר קובצי אימג') באמצעות הפלאגין Jib Maven.
mvn clean package jib:buildפורסים את האפליקציה ב-Cloud Run:
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
כאשר
MY_PROJECTהוא שם Google Cloud הפרויקט שיצרתם. הפקודה הזו מפיקה את נקודת הקצה שאליה המינוי ל-Pub/Sub שולח בקשות תרגום. חשוב לשים לב לנקודת הקצה הזו, כי תצטרכו אותה כדי ליצור את המינוי ל-Pub/Sub, ותיכנסו לנקודת הקצה בדפדפן כדי לבקש תרגום חדש.
בדיקת האפליקציה
אחרי שפורסים את שירות Cloud Run, אפשר לנסות לבקש תרגום.
כדי להציג את האפליקציה בדפדפן, עוברים לנקודת הקצה של Cloud Run שיצרתם קודם.
יש דף עם רשימה ריקה של תרגומים וטופס לבקשת תרגומים חדשים.
לוחצים על + בקשה לתרגום, ממלאים את טופס הבקשה ולוחצים על שליחה.
אחרי השליחה, המערכת מחזירה אתכם אוטומטית לנתיב
/translate, אבל יכול להיות שהתרגום החדש עדיין לא יופיע. כדי לרענן את הדף, לוחצים על רענון refresh. נוספה שורה חדשה לרשימת התרגומים. אם התרגום לא מופיע, צריך לחכות עוד כמה שניות ולנסות שוב. אם עדיין לא מופיע תרגום, אפשר לעבור לקטע הבא בנושא ניפוי באגים באפליקציה.
ניפוי באגים באפליקציה
אם אתם לא מצליחים להתחבר לשירות Cloud Run או שלא מופיעים תרגומים חדשים, כדאי לבדוק את הדברים הבאים:
בודקים שהפקודה
gcloud run deployהושלמה בהצלחה ושלא הוחזרו שגיאות. אם היו שגיאות (לדוגמה,message=Build failed), תקנו אותן ונסו להריץ שוב.בודקים אם יש שגיאות ביומנים:
נכנסים לדף Cloud Run במסוף Google Cloud .
לוחצים על שם השירות,
background.לוחצים על יומנים.
הסרת המשאבים
מחיקת הפרויקט
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת שירותי Cloud Run.
מוחקים את שירותי Cloud Run שיצרתם במדריך הזה:
gcloud run services delete --region=$region background
המאמרים הבאים
- מידע נוסף על Cloud Run
- כדאי לנסות את Cloud Run, שמאפשר להריץ קונטיינרים ללא שמירת מצב בסביבה מנוהלת או באשכול Google Kubernetes Engine משלכם.