בחירה בין Pub/Sub לבין שירות מנוהל ל-Apache Kafka

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

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

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

סקירה כללית של מושגי Pub/Sub זמינה במאמר סקירה כללית של שירות Pub/Sub.

סקירה כללית של המושגים שקשורים לשירות המנוהל ל-Apache Kafka זמינה במאמר סקירה כללית של השירות המנוהל ל-Apache Kafka.

קלות התפעול לעומת ניידות

הבחירה בין Pub/Sub לבין שירות מנוהל ל-Apache Kafka היא פשרה בין פשטות תפעולית לבין ניידות.

פשטות תפעולית של Pub/Sub

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

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

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

פריסת Kafka קשורה לאזור מסוים, ולכן אם מעבירים נתונים בין אזורים, העברת הנתונים צריכה להתבצע מחוץ לשירות. כדי לוודא שהנתונים ימשיכו לנוע בצורה תקינה ולענות על הצרכים של הנושאים באשכול Kafka, צריך להוסיף לעבודה התפעולית שלכם.

ניידות של שירות מנוהל ל-Apache Kafka

התכונות של Pub/Sub כמו התאמה אוטומטית לעומס והפצת נתונים גלובלית מקלות על התפעול, אבל ממשקי ה-API של Apache Kafka נפוצים הרבה יותר.

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

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

איזה שירות מתאים לכם

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

בוחרים ב-Pub/Sub אם הגורמים הבאים מתארים את הדרישות שלכם:

  • אתם נותנים עדיפות לפשטות תפעולית בתוך Google Cloud.

  • אתם צריכים פתרון שניתן להתאמה לעומס ואין בו שרת (serverless), עם מינימום עומס ניהולי.

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

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

  • אתם צריכים צבירת נתונים בין אזורים.

  • אתם צריכים להגדיל או להקטין את מספר המינויים ואת מספר בעלי התוכן הדיגיטלי העצמאיים.

כדאי לבחור בשירות מנוהל ל-Apache Kafka אם הדרישות שלכם מתאימות לתיאור הבא:

  • ניידות בין כמה ספקי ענן או בסביבות מקומיות היא חיונית.

  • יש לכם עומסי עבודה קיימים של Kafka שאתם רוצים להעביר אלGoogle Cloud. מידע נוסף זמין במאמר בחירה על סמך הגדרת Kafka הקיימת.

  • נפח התנועה עקבי בלי הרבה שינויים.

  • אתם מוכנים לטפל בניהול הקיבולת.

  • אתם צריכים להבטיח את סדר ההודעות בנפח נתונים גבוה לכל מפתח.

  • אתם רוצים להשתמש בדפוס של מקור אירועים עם יומן אירועים כמקור אמת.

בחירה על סמך הגדרת Kafka הקיימת

אם אתם כבר משתמשים ב-Kafka ומחפשים פתרון מנוהל, מאובטח ואמין ב- Google Cloud, השירות המנוהל ל-Apache Kafka הוא הבחירה המומלצת.

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

לעומסי עבודה חדשים או למשתמשים חדשים בסטרימינג ב- Google Cloud, מומלץ להשתמש ב-Pub/Sub כי הוא קל לשימוש. אם אתם רוצים להעביר את עומסי העבודה הקיימים של Kafka אל הענן עם שינויים מינימליים בקוד, השירות המנוהל ל-Apache Kafka הוא הבחירה האידיאלית.

שילוב עם מוצרי Cloud

השירות המנוהל של Google ל-Apache Kafka ו-Pub/Sub משתלבים עם מגוון Google Cloud שירותים כמו Dataflow,‏ BigQuery,‏ Cloud Storage ועוד.

אם אתם צריכים אסטרטגיה של ריבוי עננים וחשוב לכם להעביר נתונים בין ספקי ענן שונים, השירות המנוהל ל-Apache Kafka מציע גמישות רבה יותר. הסיבה לכך היא ש-Kafka משתלב עם מגוון רחב יותר של מערכות מחוץ ל- Google Cloud בהשוואה ל-Pub/Sub.

השוואה בין תכונות

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

תכונה Pub/Sub שירות מנוהל ל-Apache Kafka
שימוש קל קל יותר להגדיר ולתחזק נדרש מאמץ תפעולי רב יותר
מודל עלויות תשלום לפי שימוש תשלום לפי קיבולת למחשוב

תשלום לפי שימוש ברשת ובאחסון.

עיבוד פעם אחת בדיוק תומך במסירה סימולטנית יחידה ובסמנטיקה חזקה של אישור. תומך בתופעות לוואי של בדיוק פעם אחת כשקוראים מנושא אחד וכותבים לנושא אחר.
התאמה להיקף התאמה אוטומטית לעומס (automatic scaling) חלקה מ-KB ל-GB לשנייה לכל נושא, שפועלת גם בעומסי עבודה בלתי צפויים. נדרשת הגדרה ידנית
הזמנת משלוח

מציע הזמנה בתוך המפתחות.

תפוקה של 1MB לשנייה לכל מפתח סדר גרנולרי

אפשר להזמין מתוך מחיצות.

הזמנה לכל מחיצה עד לקיבולת התפוקה של המחיצה.
שמירת נתונים ‫31 ימים שימור ללא הגבלה
חביון מקצה לקצה זמן האחזור מקצה לקצה הוא בדרך כלל בסדר גודל של 100 אלפיות השנייה בדרך כלל, זמן האחזור הוא בסדר גודל של 10 אלפיות השנייה למנויים שמתנהלים בצורה תקינה.
תאימות לקוד פתוח של Kafka להעברה והפעלה לא כן
ניהול זהויות והרשאות גישה (IAM) ואבטחה כן כן
הגדרה אוטומטית של הרשת כן כן
מרובה עננים (multi-cloud): זהה בעננים שונים לא כן
הסכם רמת שירות (SLA) לזמן פעולה תקינה כן כן
הסכם רמת שירות (SLA) של רמת נתוני הרשת כן לא בשלב הזה
רישום ביומן ומעקב כן כן
איזון מחדש של מחיצות בין ברוקרים לא רלוונטי כן
קיבולת אוטומטית ‫Pub/Sub מתאים באופן דינמי את הקיבולת על סמך קצב ההודעות הנכנסות והביקוש של המנויים. השירות מנהל את התשתית הבסיסית, כמו מכונות וירטואליות ואחסון. אתם קובעים היבטים כמו מספר המחיצות וגורם השכפול.
ניהול אחסון אוטומטי כן כן
שדרוגי תוכנה אוטומטיים כן כן
תמיכת לקוחות כן כן
Kafka Connect Service לא רלוונטי עם שירותים מקושרים שסופקו על ידי משתמשים
תמיכה בסכימה כן עם מאגר סכימות שסופק על ידי המשתמש
תואם ל-ks qIDB, ‏ KSQL לא כן
תמיכה במחברי OSS כן למחברי Kafka ו-Flink לא
שילוב עם אגם נתונים ומחסן נתונים כן כן