אפאצ'י קפקא מול אפאצ'י פולסאר: איך לבחור

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

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

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

אפאצ'י קפקא

פותח על ידי לינקדאין ושוחרר כמקור פתוח עוד בשנת 2011, אפאצ'י קפקא התפשט לרחבה, והפך כמעט לבחירת ברירת המחדל עבור רבים כאשר חושבים להוסיף אוטובוס שירות או מערכת פאב / תת לארכיטקטורה. מאז הופעת הבכורה של אפאצ'י קפקא, המערכת האקולוגית של קפקא גדלה במידה ניכרת, והוסיפה את רישום התוכניות לאכיפת סכמות בהעברת הודעות אפאצ'ה קפקא, Kafka Connect להזרמה קלה ממקורות נתונים אחרים כגון מאגרי מידע לקפקא, זרמי קפקא לעיבוד זרמים מבוזרים, ולאחרונה KSQL לביצוע שאילתות דמויי SQL בנושאי קפקא. (נושא בקפקא הוא שמו של ערוץ מסוים.)

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

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

יתר על כן, הגישה שננקטה לתמיכה ברב שכירות באמצעות כלי שירות שנקרא MirrorMaker, הייתה דרך בטוחה לגרום ל- SREs להוציא את השיער. ואכן, MirrorMaker נחשבת לבעיה כזו שחברות כמו Uber יצרו מערכת משלהן לשכפול בין מרכזי נתונים (uReplicator). Confluent כולל Conflicent Replicator כחלק מהיצע הארגוני של Apache Kafka. אם כבר מדברים כמי שנאלץ לשמור על הגדרת MirrorMaker, חבל שה- Replicator אינו חלק מגרסת הקוד הפתוח.

עם זאת, זה בהחלט לא כל החדשות הרעות בחזית המבצעית. עבודה רבה נעשתה בסדרה הנוכחית של Apache Kafka 1.x כדי להפחית כמה מכאבי הראש בניהול אשכול. לאחרונה חלו כמה שינויים המאפשרים למערכת להפעיל אשכולות גדולים של יותר מ- 200,000 מחיצות בצורה יעילה יותר, ושיפורים כמו הוספת תורי "אות מתה" ל- Kafka Connect הופכים זיהוי והתאוששות מבעיות במקורות נתונים וכיורים כל כך הרבה קל יותר. אנו צפויים גם לראות תמיכה ברמת הייצור בהפעלת Apache Kafka ב- Kubernetes בשנת 2019 (באמצעות תרשימי ה- Helm ומפעיל Kubernetes).

בשנת 2014, שלושה מהמפתחים המקוריים של קפקא (ג'ון ראו, ג'יי קרפס ונאהה נרקדות) הקימו את Confluent, המספק תכונות ארגוניות נוספות בפלטפורמת Confluent שלה, כמו המשכפל הנ"ל, מרכז הבקרה, תוספי אבטחה נוספים, וכן הצעות התמיכה והשירותים המקצועיים הרגילים. ל- Confluent יש גם הצעת ענן, Confluent Cloud, שהיא שירות Confluent Platform המנוהל באופן מלא שפועל בשירותי האינטרנט של אמזון או ב- Google Cloud Platform, אם אתה מעדיף לא להתמודד עם חלק מהתקורה התפעולית של הפעלת אשכולות בעצמך.

אם אתה נעול ב- AWS ומשתמש בשירותי אמזון, שים לב שאמזון הציגה תצוגה מקדימה ציבורית של Amazon Managed Streaming for Kafka (MSK), שהוא שירות קפקא מנוהל במלואו בתוך המערכת האקולוגית של AWS. (שים לב גם כי MSK של אמזון אינה מסופקת בשותפות עם Confluent, כך שהפעלת MSK לא תביא לך את כל התכונות של Confluent Platform, אלא רק את מה שמופיע בקוד הפתוח Apache Kafka.)

אפאצ'י פולסאר

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

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

תחת הכיסויים, Apache Pulsar משתמש ב- Apache BookKeeper כדי לשמור על צרכי האחסון שלה, אבל יש טוויסט: ל- Apache Pulsar יש תכונה שנקראת Storage Storage שהיא די משהו. אחת הבעיות של מערכות יומן מבוזרות היא שבעוד שאתה רוצה שהנתונים יישארו בפלטפורמת היומן זמן רב ככל האפשר, כונני הדיסק אינם בגודל אינסופי. בשלב מסוים, אתה מקבל את ההחלטה למחוק את ההודעות או לאחסן אותן במקום אחר, שם הן יכולות להיות מופעלות מחדש דרך צינור הנתונים במידת הצורך בעתיד. מה שעובד, אבל יכול להיות מסובך מבחינה תפעולית. Apache Pulsar, באמצעות אחסון שכבתי, יכול להעביר באופן אוטומטי נתונים ישנים יותר ל- Amazon S3, ל- Google Cloud Storage, או ל- Azure Blog Storage, ועדיין להציג חזרה ללקוח תצוגה שקופה;הלקוח יכול לקרוא מתחילת הזמן בדיוק כאילו כל ההודעות היו ביומן.

בדיוק כמו אפאצ'י קפקא, אפאצ'י פולסאר גידלה מערכת אקולוגית לעיבוד נתונים (אם כי היא מספקת גם מתאמים לאפאצ'י ספארק ולאפאצ'י סטורם). Pulsar IO שווה ערך ל- Kafka Connect לחיבור למערכות נתונים אחרות כמקורות או כיורים, ו- Pulsar Functions מספק פונקציונליות לעיבוד נתונים. שאילתת SQL ניתנת באמצעות מתאם למנוע הפרסטו הפתוח של פייסבוק.

קמט מעניין הוא ש- Pulsar Functions ו- Pulsar IO פועלים בתוך אשכול פולסרים רגיל במקום להיות תהליכים נפרדים העלולים לרוץ בכל מקום. זו אמנם הפחתה בגמישות, אך היא הופכת את הדברים לפשוטים בהרבה מבחינה מבצעית. (יש מצב ריצה מקומי שעלול להיות מנוצל לרעה להפעלת פונקציות מחוץ לאשכול, אך התיעוד יוצא מגדרו ואומר "אל תעשו את זה!")

Apache Pulsar מציע גם שיטות שונות להפעלת פונקציות בתוך האשכול: ניתן להריץ כתהליכים נפרדים, כמכולות Docker, או כשרשורים הפועלים בתהליך JVM של מתווך. זה קשור למודל הפריסה של Apache Pulsar, שכבר תומך בקוברנטס או Mesosphere DC / OS בייצור. דבר אחד שיש לשים לב אליו הוא ש- Pulsar Functions, Pulsar IO ו- SQL הם תוספות חדשות יחסית ל- Apache Pulsar, לכן צפו לכמה קצוות חדים אם תשתמשו בהם.

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

באופן דומה ל- Confluent, הקימו מפתחי אפאצ'י פולסאר ביאהו (מטאו מרלי וסייג'י גואו) חברת ספינוף, סטרימליו, שם הם מייסדים יחד עם יוצרי אפאצ'י הרון (קרת'יק רמסמי וסנג'ייב קולקרני) . ההיצע הארגוני של Streamlio כולל פתרונות תמיכה מסחריים ושירותים מקצועיים רגילים, יחד עם קונסולת ניהול קוד סגור, אך דברים כמו תמיכה יעילה ועמידה ברב-דירות הם חלק ממוצר הקוד הפתוח.

אפאצ'י קפקא או אפאצ'י פולסאר?

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

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