אפליקציות רבות צריכות לבצע עיבוד ברקע מחוץ להקשר של בקשה לאחזור מהרשת. במדריך הזה ניצור אפליקציית אינטרנט שמאפשרת למשתמשים להזין טקסט לתרגום, ואז מציגה רשימה של תרגומים קודמים. התרגום מתבצע בתהליך ברקע כדי למנוע חסימה של בקשת המשתמש.
התרשים הבא מדגים את תהליך בקשת התרגום.
כך פועלת אפליקציית המדריך:
- כדי לראות רשימה של תרגומים קודמים, שנשמרו ב-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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
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, בתרגום וב-Pub/Sub.
הלקוחות הגלובליים של Firestore, Translation ו-Pub/Sub מאותחלים כדי שאפשר יהיה להשתמש בהם מחדש בין הפעלות. כך לא תצטרכו לאתחל לקוחות חדשים בכל הפעלה, מה שיאט את הביצוע.
הפונקציה לטיפול באינדקס (
/) מקבלת את כל התרגומים הקיימים מ-Firestore וממלאת תבנית HTML ברשימה:כדי לבקש תרגומים חדשים, צריך לשלוח טופס HTML. ה-handler של תרגום הבקשה, שרשום ב-
/create, מנתח את הטופס שנשלח, מאמת את הבקשה ומפרסם הודעה ב-Pub/Sub:המינוי ל-Pub/Sub שיוצרים מעביר את הבקשות האלה לנקודת הקצה של Cloud Run, שמנתחת את ההודעה ב-Pub/Sub כדי לקבל את הטקסט לתרגום ואת שפת היעד הרצויה. לאחר מכן, ה-API של Translation מתרגם את המחרוזת לשפה שבחרתם.
האפליקציה מאחסנת את נתוני התרגום במסמך חדש שהיא יוצרת ב-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 משלכם.