מה זה Pub/Sub?

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

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

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

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

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

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

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

  • העברה של אינטראקציות משתמשים ואירועים בצד השרת. כדי להשתמש באירועים של אינטראקציות עם משתמשים מאפליקציות של משתמשי קצה או באירועים של שרתים מהמערכת שלכם, יכול להיות שתצטרכו להעביר אותם ל-Pub/Sub. אחר כך אפשר להשתמש בכלי לעיבוד נתונים בזמן אמת, כמו Dataflow, שמעביר את האירועים למסדי נתונים. דוגמאות למסדי נתונים כאלה הן BigQuery,‏ Bigtable ו-Cloud Storage. ‫Pub/Sub מאפשר לכם לאסוף אירועים מכמה לקוחות בו-זמנית.
  • חלוקת אירועים בזמן אמת. יכול להיות שאירועים, גולמיים או מעובדים, יהיו זמינים לכמה אפליקציות בצוות ובארגון שלכם לעיבוד בזמן אמת. ‫Pub/Sub תומך ב'אפיק אירועים ארגוני' ובדפוסי עיצוב של אפליקציות מבוססות-אירועים. ‫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 נעשה שימוש בטכנולוגיות סטנדרטיות של gRPC ו-REST API, וגם בספריות לקוח בכמה שפות.
  • טריגרים, התראות ו-webhook. שירות Pub/Sub מציע שליחת הודעות מבוססת-push כבקשות HTTP POST ל-webhook. אפשר להטמיע אוטומציה של תהליכי עבודה באמצעות Cloud Functions או מוצרים אחרים ללא שרת.
  • תזמור. אפשר לשלב את Pub/Sub בתהליכי עבודה מרובי-שלבים בלי שרת (serverless) באופן דקלרטיבי. תיזמור של Big Data וניתוח נתונים מתבצע לרוב באמצעות Managed Airflow, שתומך בטריגרים של Pub/Sub. אפשר גם לשלב את Pub/Sub עם Application Integration (גרסת Preview), שהוא פתרון של פלטפורמת אינטגרציה כשירות (iPaaS). ‫Application Integration מספק טריגר Pub/Sub להפעלת שילובים או להתחלתם.
  • Integration Connectors(גרסת Preview) המחברים האלה מאפשרים לכם להתחבר למקורות נתונים שונים. בעזרת מחברים, גם שירותים וגם אפליקציות עסקיות של צד שלישי נחשפים לשילובים שלכם דרך ממשק שקוף וסטנדרטי. Google Cloud ב-Pub/Sub, אפשר ליצור חיבור ל-Pub/Sub לשימוש בשילובים.

השלבים הבאים