מה זה Pub/Sub?

‫Pub/Sub הוא שירות אסינכרוני וניתן להתאמה להעברת הודעות, שמפריד בין השירותים שמפיקים את ההודעות לבין השירותים שמעבדים אותן.

שירות Pub/Sub מאפשר לשירותים לתקשר באופן אסינכרוני, עם זמני אחזור של כ-100 אלפיות השנייה בדרך כלל.

‫Pub/Sub משמש לניתוח נתונים בזמן אמת ולצינורות עיבוד נתונים של שילוב נתונים כדי לטעון ולהפיץ נתונים. הוא יעיל באותה מידה כתוכנת תווך (middleware) מבוססת-הודעות לשילוב שירותים, או כתור להפעלת משימות במקביל.

בעזרת Pub/Sub אפשר ליצור מערכות של יצרני אירועים וצרכני אירועים, שנקראים אפליקציות לשליחת הודעות ואפליקציות רשומות. בעלי התוכן הדיגיטלי מתקשרים עם המנויים באופן אסינכרוני על ידי שידור אירועים, ולא באמצעות קריאות לשירות מרוחק (RPC) באופן סינכרוני.

בעלי תוכן דיגיטלי שולחים אירועים לשירות Pub/Sub, בלי קשר לאופן או למועד שבו האירועים האלה יעובדו. לאחר מכן, Pub/Sub מעביר את האירועים לכל השירותים שמגיבים להם. במערכות שמתקשרות באמצעות RPC, בעלי התוכן הדיגיטלי צריכים לחכות עד שהמנויים יקבלו את הנתונים. עם זאת, השילוב האסינכרוני ב-Pub/Sub מגביר את הגמישות והעמידות של המערכת הכוללת.

כדי להתחיל להשתמש ב-Pub/Sub, תוכלו להיעזר במדריך למתחילים לשימוש במסוף Google Cloud . למבוא מקיף יותר, קראו את המאמר בניית מערכת העברת הודעות ב-Pub/Sub.

תרחישים נפוצים לדוגמה

  • הטמעת אינטראקציות של משתמשים ואירועים בשרת. כדי להשתמש באירועים של אינטראקציות של משתמשים מאפליקציות של משתמשי קצה או באירועי שרת מהמערכת, אפשר להעביר אותם ל-Pub/Sub. אחר כך אפשר להשתמש בכלי לעיבוד זרמי נתונים (stream processing), כמו Dataflow, שמעביר את האירועים למסדי נתונים. דוגמאות למסדי נתונים כאלה: BigQuery,‏ Bigtable ו-Cloud Storage. בעזרת Pub/Sub אפשר לאסוף אירועים מהרבה לקוחות בו-זמנית.
  • הפצת אירועים בזמן אמת. אירועים, גולמיים או מעובדים, יכולים להיות זמינים למספר אפליקציות בצוות ובארגון שלכם לעיבוד בזמן אמת. ‫Pub/Sub תומך ב-"enterprise event bus" ובתבניות עיצוב של אפליקציות מבוססות-אירועים. באמצעות Pub/Sub אפשר לשלב מערכות רבות שמייצאות אירועים ל-Pub/Sub.
  • שכפול נתונים בין מסדי נתונים. בדרך כלל משתמשים ב-Pub/Sub כדי להפיץ אירועי שינוי ממסדי נתונים. אפשר להשתמש באירועים האלה כדי ליצור תצוגה של מצב מסד הנתונים והיסטוריית המצבים ב-BigQuery ובמערכות אחרות לאחסון נתונים.
  • עיבוד מקביל ותהליכי עבודה. כדי לחלק ביעילות הרבה משימות בין כמה עובדים, אפשר להשתמש בהודעות Pub/Sub כדי לתקשר עם העובדים. דוגמאות למשימות כאלה: דחיסת קובצי טקסט, שליחת התראות באימייל, הערכת מודלים של AI ושינוי הפורמט של תמונות.
  • אוטובוס אירועים ארגוני. אתם יכולים ליצור אפיק לשיתוף נתונים בזמן אמת ברמת הארגון, ולהפיץ אירועים עסקיים, עדכונים של מסדי נתונים ואירועי ניתוח נתונים ברחבי הארגון.
  • סטרימינג של נתונים מאפליקציות, משירותים או ממכשירי IoT. לדוגמה, אפליקציית SaaS יכולה לפרסם פיד של אירועים בזמן אמת. לחלופין, חיישן ביתי יכול להעביר נתונים בסטרימינג ל-Pub/Sub לשימוש במוצרים אחרים של Google Cloud באמצעות צינור עיבוד נתונים.
  • רענון של מטמונים מבוזרים. לדוגמה, אפליקציה יכולה לפרסם אירועי ביטול כדי לעדכן את המזהים של אובייקטים שהשתנו.
  • איזון עומסים לאמינות. לדוגמה, יכול להיות שמכונות של שירות מסוים פרוסות ב-Compute Engine בכמה אזורים, אבל הן נרשמות לנושא משותף. אם השירות נכשל באחד מהאזורים, האזורים האחרים יכולים לקחת על עצמם את העומס באופן אוטומטי.

השוואה בין Pub/Sub לבין טכנולוגיות אחרות להעברת הודעות

‫Pub/Sub משלב את יכולת ההתאמה האופקית של Apache Kafka ו-Pulsar עם תכונות שקיימות בתוכנות תווך להעברת הודעות, כמו Apache ActiveMQ ו-RabbitMQ. דוגמאות לתכונות כאלה הן תורים להודעות שלא נמסרו וסינון.

תכונה נוספת ש-Pub/Sub מאמץ מתווכנת העברת הודעות היא מקביליות לכל הודעה, במקום העברת הודעות שמבוססת על חלוקה למחיצות. שירות Pub/Sub "משכיר" הודעות ספציפיות ללקוחות מנויים, ואז עוקב אחרי העיבוד של הודעה מסוימת כדי לוודא שהוא בוצע בהצלחה.

לעומת זאת, מערכות אחרות להעברת הודעות שניתנות להרחבה אופקית משתמשות במחיצות לצורך הרחבה אופקית. כך המנויים נאלצים לעבד את ההודעות בכל מחיצה לפי הסדר, ומספר הלקוחות בו-זמנית מוגבל למספר המחיצות. עיבוד לכל הודעה ממקסם את המקביליות של אפליקציות המנויים, ועוזר להבטיח את העצמאות של המפרסמים והמנויים.

השוואה בין תקשורת שירות לשירות ותקשורת שירות ללקוח

‫Pub/Sub מיועד לתקשורת בין שירותים, ולא לתקשורת עם משתמשי קצה או לקוחות IoT. יש מוצרים אחרים שמתאימים יותר לדפוסים אחרים:

אפשר להשתמש בשילוב של השירותים האלה כדי ליצור תבניות של לקוח -> שירותים -> מסד נתונים. לדוגמה, תוכלו לעיין במדריך העברת הודעות Pub/Sub בסטרימינג דרך WebSockets.

שילובים

ל-Pub/Sub יש הרבה שילובים עם מוצרים אחרים של Google Cloud כדי ליצור מערכת הודעות עם כל התכונות:

  • עיבוד זרמי נתונים (stream processing) ושילוב נתונים. נתמך על ידי Dataflow, כולל תבניות ו-SQL של Dataflow, שמאפשרים עיבוד ושילוב נתונים ב-BigQuery ובאגמי נתונים ב-Cloud Storage. תבניות של Dataflow להעברת נתונים מ-Pub/Sub ל-Cloud Storage, ל-BigQuery ולמוצרים אחרים זמינות בממשקי המשתמש של Pub/Sub ו-Dataflow במסוףGoogle Cloud . אפשר גם לשלב את Apache Spark, במיוחד כשמנהלים אותו באמצעות Managed Service for Apache Spark. אפשר להשתמש ב-Data Fusion כדי ליצור קומפוזיציה חזותית של צינורות עיבוד נתונים ושילוב שפועלים ב-Spark וב-Managed Service for Apache Spark.
  • מעקב, התראות ורישום ביומן. נתמך על ידי מוצרי Monitoring ו-Logging.
  • אימות ו-IAM. ‫Pub/Sub מסתמך על אימות OAuth סטנדרטי שמשמש מוצרים אחרים של Google Cloud , ותומך ב-IAM פרטני שמאפשר בקרת גישה למשאבים ספציפיים.
  • ממשקי API. ב-Pub/Sub משתמשים בטכנולוגיות API סטנדרטיות של שירותי gRPC ו-REST, לצד ספריות לקוח בכמה שפות.
  • טריגרים, התראות ו-webhooks. ב-Pub/Sub אפשר לשלוח הודעות באמצעות דחיפה כבקשות POST ל-webhooks. אתם יכולים להטמיע אוטומציה של תהליכי עבודה באמצעות Cloud Functions או מוצרים אחרים ללא שרת (serverless).
  • תזמור. אפשר לשלב את Pub/Sub ב-Workflows בלי שרת (serverless) עם כמה שלבים באופן הצהרתי. תזמור של Big Data וניתוח נתונים נעשה לעיתים קרובות באמצעות Managed Airflow, שתומך בטריגרים של Pub/Sub. אפשר גם לשלב את Pub/Sub עם Application Integration, שהוא פתרון של פלטפורמת שילוב כשירות (iPaaS). ב-Application Integration יש טריגר של Pub/Sub כדי להפעיל או להתחיל שילובים.
  • Integration Connectors המחברים האלה מאפשרים לכם להתחבר למקורות נתונים שונים. בעזרת מחברים, גם שירותיGoogle Cloud וגם אפליקציות עסקיות של צד שלישי נחשפים לשילובים שלכם דרך ממשק שקוף וסטנדרטי. ב-Pub/Sub, אתם יכולים ליצור מחבר Pub/Sub לשימוש בשילובים שלכם.

השלבים הבאים