הרבה אפליקציות צריכות לבצע עיבוד ברקע מחוץ להקשר של בקשה לאחזור מהרשת. במדריך הזה ניצור אפליקציית אינטרנט שמאפשרת למשתמשים להזין טקסט לתרגום, ואז מציגה רשימה של תרגומים קודמים. התרגום מתבצע בתהליך ברקע כדי למנוע חסימה של בקשת המשתמש.
התרשים הבא מדגים את תהליך בקשת התרגום.
כך פועלת אפליקציית המדריך:
- עוברים לדף האינטרנט כדי לראות רשימה של תרגומים קודמים, שמאוחסנים ב-Firestore.
- שליחת בקשה לתרגום טקסט באמצעות הזנת טופס HTML.
- בקשת התרגום מתפרסמת ב-Pub/Sub.
- מופעל שירות Cloud Run שרשום לנושא Pub/Sub הזה.
- השירות Cloud Run משתמש ב-Cloud Translation כדי לתרגם את הטקסט.
- שירות Cloud Run מאחסן את התוצאה ב-Firestore.
המדריך הזה מיועד לכל מי שרוצה ללמוד על עיבוד ברקע באמצעות Google Cloud. אין צורך בניסיון קודם עם Pub/Sub, Firestore, App Engine או פונקציות של Cloud Run. עם זאת, כדי להבין את כל הקוד, כדאי שיהיה לכם ניסיון מסוים ב- .NET, ב-JavaScript וב-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, Cloud Run, 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, Cloud Run, 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-dotnet.git
אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.
עוברים לספרייה שמכילה את הקוד לדוגמה של משימת הרקע:
cd getting-started-dotnet/BackgroundProcessing
הסבר על השירות TranslateWorker
השירות מתחיל בייבוא של כמה תלויות כמו Firestore ו-Translation.
לקוחות Firestore ו-Translation מאותחלים כדי שאפשר יהיה להשתמש בהם מחדש בין הפעלות של handler. כך לא תצטרכו לאתחל לקוחות חדשים בכל הפעלה, מה שיאט את הביצוע.
ה-API של Translation מתרגם את המחרוזת לשפה שבחרתם.
הקונסטרוקטור של בקר מקבל את לקוחות Firestore ו-Pub/Sub.
השיטה
Postמנתחת את הודעת Pub/Sub כדי לקבל את הטקסט לתרגום. הוא משתמש במזהה ההודעה כשם ייחודי לבקשת התרגום כדי לוודא שהוא לא שומר תרגומים כפולים.
פריסת שירות TranslateWorker
בספרייה
BackgroundProcessing, מריצים את סקריפט PowerShell כדי ליצור ולפרוס את השירות ב-Cloud Run:PublishTo-CloudRun.ps1
הסבר על סקריפט PublishTo-CloudRun.ps1
הסקריפט PublishTo-CloudRun.ps1 מפרסם את השירות ב-Cloud Run ומגן על השירות TranslateWorker מפני ניצול לרעה. אם השירות מאפשר את כל החיבורים הנכנסים, כל אחד יכול לשלוח בקשות תרגום לבקר ובכך לגרום לעלויות. לכן, צריך להגדיר את השירות כך שיקבל רק בקשות מ-Pub/Sub.POST
הסקריפט מבצע את הפעולות הבאות:
- מבצע build של האפליקציה באופן מקומי באמצעות
dotnet publish. - יצירת קונטיינר שמריץ את האפליקציה באמצעות Cloud Build.
- פריסת האפליקציה ב-Cloud Run.
- מאפשר לפרויקט ליצור טוקנים לאימות Pub/Sub.
- יוצר חשבון שירות שמייצג את הזהות של המינוי ל-Pub/Sub.
- נותן לחשבון השירות הרשאה להפעיל את שירות
TranslateWorker. יצירת נושא ומינוי ב-Pub/Sub.
הסבר על השירות TranslateUI
שירות TranslateUI מעבד דף אינטרנט שבו מוצגים תרגומים מהזמן האחרון, ומקבל בקשות לתרגומים חדשים.
המחלקות
StartUpמגדירות אפליקציית ASP.NET ויוצרות לקוחות של Pub/Sub ו-Firestore.הפונקציה לטיפול באינדקס
Indexמקבלת את כל התרגומים הקיימים מ-Firestore וממלאת אתViewModelברשימה:כדי לבקש תרגומים חדשים, צריך לשלוח טופס HTML. ה-handler של בקשת התרגום מאמת את הבקשה ומפרסם הודעה ב-Pub/Sub:
פריסת שירות TranslateUI
בספרייה
BackgroundProcessing, מריצים את סקריפט PowerShell כדי ליצור ולפרוס את השירות ב-Cloud Run:./PublishTo-CloudRun.ps1
הסבר על סקריפט PublishTo-CloudRun.ps1
הסקריפט PublishTo-CloudRun.ps1 מפרסם את האפליקציה ב-Cloud Run.
הסקריפט מבצע את הפעולות הבאות:
- מבצע build של האפליקציה באופן מקומי באמצעות
dotnet publish. - מבצעים Build לקונטיינר שמריץ את האפליקציה באמצעות Cloud Build.
פריסת האפליקציה ב-Cloud Run.
בדיקת האפליקציה
אחרי שהסקריפט PublishTo-CloudRun.ps1 יפעל בהצלחה, נסו לבקש תרגום.
הפקודה האחרונה בסקריפט
PublishTo-CloudRun.ps1מציינת את כתובת ה-URL של שירות ממשק המשתמש. בחלון המסוף, מאתרים את כתובת ה-URL של שירותTranslateUI:gcloud beta run services describe translate-ui --region $region --format="get(status.address.hostname)"
בדפדפן, עוברים לכתובת ה-URL שקיבלתם בשלב הקודם.
יש דף עם רשימה ריקה של תרגומים וטופס לבקשת תרגומים חדשים.
בשדה Text to translate (טקסט לתרגום), מזינים טקסט לתרגום, למשל
Hello, World..לוחצים על שליחה.
כדי לרענן את הדף, לוחצים על רענון refresh. נוספה שורה חדשה לרשימת התרגומים. אם לא רואים תרגום, כדאי לחכות עוד כמה שניות ולנסות שוב. אם עדיין לא מופיע תרגום, אפשר לעבור לקטע הבא בנושא ניפוי באגים באפליקציה.
ניפוי באגים באפליקציה
אם אתם לא מצליחים להתחבר לשירות Cloud Run או שלא רואים תרגומים חדשים, כדאי לבדוק את הדברים הבאים:
בודקים שהסקריפט
PublishTo-CloudRun.ps1הושלם בהצלחה ולא הפיק שגיאות. אם היו שגיאות (לדוגמה,message=Build failed), צריך לתקן אותן ולנסות להריץ שוב.בודקים אם יש שגיאות ביומנים:
נכנסים לדף Cloud Run במסוף Google Cloud .
לוחצים על שם השירות,
translate-ui.לוחצים על יומנים.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט Google Cloud
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת שירותי Cloud Run.
מוחקים את שירותי Cloud Run שיצרתם במדריך הזה:
gcloud beta run services delete --region=$region translate-ui
gcloud beta run services delete --region=$region translate-worker