בדף הזה מוסבר על Pub/Sub, למה עסקים צריכים Pub/Sub ומהם היתרונות של Pub/Sub בהשוואה לטכנולוגיות דומות. בנוסף, תוכלו לקרוא על מושגי ליבה ב-Pub/Sub, כולל המונחים topic (נושא), publisher (אפליקציה לשליחת הודעות) ו-subscriber (אפליקציה רשומה).
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 מאפשר לכם לבצע אינטגרציה עם הרבה מערכות של Google שמייצאות אירועים ל-Pub/Sub.
שכפול נתונים בין מסדי נתונים. בדרך כלל משתמשים ב-Pub/Sub כדי להפיץ אירועי שינוי ממסדי נתונים. אפשר להשתמש באירועים האלה כדי ליצור תצוגה של מצב מסד הנתונים והיסטוריית המצב ב-BigQuery ובמערכות אחרות לאחסון נתונים.
עיבוד מקבילי ותהליכי עבודה. אפשר להפיץ ביעילות הרבה משימות בין כמה עובדים באמצעות הודעות Pub/Sub כדי להתחבר לפונקציות Cloud Run. דוגמאות למשימות כאלה הן דחיסת קובצי טקסט, שליחת התראות באימייל, הערכת מודלים של AI ועיצוב מחדש של תמונות.
אוטובוס אירועים ארגוני. אתם יכולים ליצור אוטובוס לשיתוף נתונים בזמן אמת בכל הארגון, שמפיץ אירועים עסקיים, עדכונים במסד נתונים ואירועים של ניתוח נתונים בכל הארגון.
סטרימינג של נתונים מאפליקציות, משירותים או ממכשירי IoT. לדוגמה, אפליקציית SaaS יכולה לפרסם פיד של אירועים בזמן אמת. לחלופין, חיישן ביתי יכול להזרים נתונים ל-Pub/Sub לשימוש במוצרים אחרים של Google Cloud Google דרך צינור עיבוד נתונים.
רענון מטמונים מבוזרים. לדוגמה, אפליקציה יכולה לפרסם אירועי ביטול תוקף כדי לעדכן את המזהים של אובייקטים שהשתנו.
איזון עומסים לאמינות. לדוגמה, יכול להיות שמופעים של שירות מסוים יפרסו ב-Compute Engine במספר אזורים, אבל יירשמו לנושא משותף. אם השירות נכשל באזור כלשהו, האזורים האחרים יכולים לקחת את העומס באופן אוטומטי.
סוגים של שירותי Pub/Sub
שירות Pub/Sub כולל שני שירותים:
שירות Pub/Sub. שירות ההודעות הזה הוא ברירת המחדל לרוב המשתמשים והאפליקציות. היא מציעה את רמת המהימנות הגבוהה ביותר ואת מערך השילובים הגדול ביותר, וגם ניהול אוטומטי של הקיבולת. Pub/Sub מבטיח שכפול סינכרוני של כל הנתונים לפחות לשני אזורים, ושכפול בשיטת 'הכי טוב שאפשר' לאזור שלישי נוסף.
שירות Pub/Sub Lite. שירות העברת הודעות נפרד אך דומה, שמבוסס על עלות נמוכה יותר. המהימנות שלו נמוכה יותר בהשוואה ל-Pub/Sub. הוא מציע אחסון נושאים אזורי או אזורי. נושאים של Zonal Lite מאוחסנים רק בתחום אחד. נושאים אזוריים קלים משכפלים נתונים לאזור שני באופן אסינכרוני. בנוסף, ב-Pub/Sub Lite צריך להקצות מראש ולנהל את נפח האחסון ואת קיבולת התפוקה. כדאי להשתמש ב-Pub/Sub Lite רק באפליקציות שבהן העלות הנמוכה מצדיקה עבודה תפעולית נוספת ומהימנות נמוכה יותר.
לפרטים נוספים על ההבדלים בין Pub/Sub לבין Pub/Sub Lite, אפשר לעיין במאמר בחירה בין Pub/Sub לבין Pub/Sub Lite.
השוואה בין Pub/Sub לבין טכנולוגיות אחרות להעברת הודעות
Pub/Sub משלב את יכולת ההתאמה האופקית של Apache Kafka ושל Pulsar עם תכונות שנמצאות בתוכנות ביניים מסורתיות להעברת הודעות, כמו Apache ActiveMQ ו-RabbitMQ. דוגמאות לתכונות כאלה הן תורים של הודעות שלא ניתן להעביר ומסננים.
תכונה נוספת ש-Pub/Sub מאמץ מתוכנות ביניים להעברת הודעות היא מקביליות לכל הודעה, במקום העברת הודעות שמבוססת על מחיצות. שירות Pub/Sub 'משכיר' הודעות בודדות ללקוחות מנויים, ואז עוקב אחרי העיבוד של הודעה מסוימת.
לעומת זאת, מערכות אחרות להעברת הודעות עם יכולת הרחבה אופקית משתמשות במחיצות להרחבה אופקית. כך המנויים נאלצים לעבד את ההודעות בכל מחיצה לפי הסדר, ומספר הלקוחות המקבילים מוגבל למספר המחיצות. עיבוד לכל הודעה בנפרד ממקסם את המקביליות של אפליקציות המנויים, ועוזר להבטיח עצמאות של בעלי תוכן דיגיטלי/מנויים.
השוואה בין תקשורת שירות לשירות ותקשורת שירות ללקוח
שירות Pub/Sub מיועד לתקשורת בין שירותים ולא לתקשורת עם לקוחות קצה או לקוחות IoT. דפוסים אחרים נתמכים טוב יותר במוצרים אחרים:
- לקוח-שרת. כדי לשלוח הודעות בין אפליקציה לנייד או אפליקציית אינטרנט לבין שירות, צריך להשתמש במוצרים שכוללים את מסד נתונים בזמן אמת ב-Firebase ואת העברת הודעות בענן ב-Firebase.
- קריאות אסינכרוניות לשירותים. שימוש ב-Cloud Tasks.
אפשר להשתמש בשילוב של השירותים האלה כדי ליצור תבניות של לקוח > שירותים > מסד נתונים. לדוגמה, אפשר לעיין במדריך בנושא הזרמת הודעות 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). שילוב האפליקציות מספק טריגר Pub/Sub להפעלת שילובים או להתחלתם.
- Integration Connectors(גרסת Preview) המחברים האלה מאפשרים לכם להתחבר למקורות נתונים שונים. בעזרת מחברים, גם שירותים וגם אפליקציות עסקיות של צד שלישי נחשפים לשילובים שלכם דרך ממשק שקוף וסטנדרטי. Google Cloud ב-Pub/Sub, אפשר ליצור חיבור ל-Pub/Sub לשימוש בשילובים.
מושגי ליבה
- נושא. משאב עם שם שאליו מפרסמים שולחים הודעות.
- מינוי. משאב עם שם שמייצג את זרם ההודעות מנושא ספציפי יחיד, שיועבר לאפליקציה המנויה. פרטים נוספים על מינויים ועל סמנטיקה של מסירת הודעות זמינים במדריך למנויים.
- הודעה. השילוב של נתונים ומאפיינים (אופציונליים) שבעל תוכן דיגיטלי שולח לנושא, ובסופו של דבר מועבר למנויים.
- מאפיין ההודעה. צמד מפתח/ערך שמוציא לאור יכול להגדיר להודעה. לדוגמה, אפשר להוסיף את המפתח
iana.org/language_tagוהערךenלהודעות כדי לסמן אותן כהודעות שניתנות לקריאה על ידי מנוי דובר אנגלית. - בעל תוכן דיגיטלי. אפליקציה שיוצרת ושולחת הודעות לנושא אחד או לכמה נושאים.
- מנוי. אפליקציה עם מינוי לנושא אחד או לכמה נושאים כדי לקבל מהם הודעות.
- אישור (או ack). אות שנשלח על ידי אפליקציה רשומה ל-Pub/Sub אחרי שהיא קיבלה הודעה בהצלחה. הודעות שאושרה קבלתן מוסרות מתור ההודעות של המינוי.
- דחיפה ומשיכה. שתי שיטות להצגת מודעות. מנוי מקבל הודעות באמצעות דחיפה של Pub/Sub לנקודת הקצה שנבחרה על ידי המנוי, או באמצעות משיכה של המנוי מהשירות.
יחסי אפליקציה לשליחת הודעות-אפליקציה רשומה יכולים להיות אחד לרבים (fan-out), רבים-לאחד (fan-in) ורבים לרבים, כמו שמוצג בדיאגרמה הבאה:
בתרשים הבא אפשר לראות איך הודעה עוברת מבעל תוכן דיגיטלי למנוי. במסירה מסוג push, האישור מובלע בתגובה לבקשת ה-push, ואילו במסירה מסוג pull נדרש RPC נפרד.
השלבים הבאים
- כדי להתחיל, אפשר לעיין במדריך למתחילים בנושא Pub/Sub או במדריך למתחילים בנושא Pub/Sub Lite.
- כדאי לקרוא את הסקירה הכללית על הארכיטקטורה של Pub/Sub.
- איך יוצרים מערכת העברת הודעות ב-Pub/Sub
- הסבר על תמחור ב-Pub/Sub.
- הסבר על המכסות והמגבלות ב-Pub/Sub וב-Pub/Sub Lite.
- הערות מוצר של Pub/Sub
- לומדים על הנדסת נתונים באמצעות שירותים Google Cloud ב-Qwiklabs.