ניהול אשכול של קפקא הוא אחד התענוגות המפוקפקים של עולם התוכנה. בין שרתים שנופלים לדיסקים שמתמלאים, רוב המפתחים היו שמחים לזרוק את המפתחות על ספק ענן ולהמשיך הלאה. היום השיקה Cloudflare בבטא ציבורית את K2, שירות יומן אירועים מבוזר שהוכרז בפוסט ההשקה הרשמי במסגרת שבוע ימי ההולדת של החברה. המוצר החדש נשען על מודל serverless מלא ומבטיח לפטור צוותים מתחזוקת תשתית, תוך שמירה על עמידות גבוהה ואחסון ארוך טווח.
בלי שרתים אבל עם שיהוי
במקום להריץ ברוקרים על גבי מכונות ייעודיות עם כונני NVMe מהירים, קלאודפלייר בחרה לבנות את K2 ישירות מעל תשתית אחסון האובייקטים שלה, R2. לפי החברה, מהלך כזה מפריד לחלוטין בין שכבת החישוב לשכבת האחסון ומעניק עמידות נתונים מוצהרת של 11 תשיעיות. מכיוון שמערכות אחסון אובייקטים אינן תומכות בפעולת שרשור פשוטה לקובץ קיים, השירות נאלץ לאסוף הודעות בזיכרון בנקודות הקצה של הרשת ולכתוב אותן כקבצי מקטעים שלמים.
ההחלטה הארכיטקטונית הזאת מגיעה עם מחיר ברור בביצועים: K2 רושם שיהוי כתיבה של כשנייה שלמה באחוזון ה-99 בגלל ההמתנה לאיגוד ההודעות לאצווה. בעולם שבו מערכות קפקא מסורתיות מחזירות אישור כתיבה תוך מילי-שניות בודדות, שנייה שלמה היא נצח. אם אתם בונים מערכת למסחר אלגוריתמי או שירות שדורש סנכרון מיידי בין שרתים, הפתרון הזה פשוט לא רלוונטי עבורכם כרגע.
זה מחיר כבד.
בעוד שלבנייה על גבי R2 יש יתרונות רבים, ישנו חיסרון אחד: שיהוי כתיבה גבוה יותר. בגרסה הראשונית של K2, זה מצטבר לכשנייה אחת של שיהוי כתיבה באחוזון ה-99 של זמני התגובה.ההכרזה הרשמית בבלוג של Cloudflare
תורים, צינורות או יומן אירועים
קלאודפלייר מחזיקה כעת בשלושה מוצרים נפרדים להעברת הודעות, וההבדלים ביניהם מהותיים. שירות Cloudflare Queues מתמקד בהודעות בודדות שדורשות עיבוד אסינכרוני מורכב, כגון ניסיונות חוזרים פרטניים, השהיות ותורי הודעות שכשלו. הוא מתאים לניהול משימות רקע שבהן כל פריט מטופל כשלעצמו, אך אינו מיועד לקריאה סדרתית חוזרת או להפצה מבוזרת.
הכלי השני, Basin Pipelines, מתמקד בקליטת זרמי מידע גולמי ושמירה ישירה של התוצאות לתוך טבלאות Apache Iceberg או קבצי Parquet. K2, לעומת זאת, מתייצב בדיוק במשבצת של יומן אירועים מובנה: הוא מאפשר למספר צרכנים שונים לקרוא את אותם הנתונים בקצב שלהם, תומך בפיצול עבודה בין עובדים ומציע שמירה ארוכת טווח.
| שירות | ייעוד מרכזי | מודל צריכה | שיהוי וביצועים | יעד טיפוסי |
|---|---|---|---|---|
| Cloudflare Queues | עיבוד משימות בודדות | תור משימות עם מנגנוני retry והשהיות | שיהוי נמוך פר הודעה | שירותי רקע ועיבוד אסינכרוני |
| Basin Pipelines | קליטה, המרה והזרמת מידע | טרנספורמציות SQL והזרמה ישירה | מותאם לעיבוד אצוות לאגמי נתונים | טבלאות Iceberg וקבצי Parquet |
| K2 Streams | יומן אירועים עמיד בריבוי צרכנים | מנויים מבוססי משיכה בחכירה | שיהוי כתיבה של כשנייה (p99) | אפליקציות צד שרת ועיבוד אנליטי |
איך זה עובד בפועל
בצד ההפקה, K2 מקבל רשומות כמידע בינארי גולמי דרך ממשק HTTP API או ישירות מתוך סביבת Workers. כל אצווה נכתבת בצורה אטומית: כל ההודעות נשמרות בהצלחה או שאף אחת מהן אינה נרשמת. נתוני התנועה עוברים דרך נקודות הקצה של קלאודפלייר, כולל אלו הפועלות בישראל בערים תל אביב וחיפה, מה שמאפשר קליטה מקומית של המידע.
בצד הצריכה, הגישה מתבצעת באמצעות מנויים שמנהלים את מיקום הקריאה באופן עצמאי. כאשר רכיב backend מושך אצווה, הוא מקבל עליה חכירה מוגבלת לחמש דקות. במהלך הזמן הזה הצרכן יכול לאשר את העיבוד, להודיע על כישלון ולבקש מסירה מחדש, או להאריך את החכירה במקרה של פעולה ממושכת. המודל הזה מבטיח מסירה לפחות פעם אחת ללא צורך בסנכרון ידני מורכב.
המחיר והאותיות הקטנות
נכון להיום השירות זמין בבטא ציבורית רק עבור משתמשים עם מנוי Workers Paid בתשלום, כפי שמוסבר בתוך המדריך להתחלת עבודה. השימוש במהלך הבטא אינו כרוך בעלות נוספת, אך מוטלות עליו מגבלות נוקשות: נפח אחסון מקסימלי של 10 גיגה-בייט בסך הכול בחשבון, וקצב הפקה מרבי של 30 מגה-בייט לשנייה לכל ערוץ.
התמחור העתידי שפורסם מעריך עלות של 4 סנט לכל גיגה-בייט של מידע שמופק או נצרך, לצד 2 סנט לחודש לגיגה-בייט של אחסון. מעבר לכך, K2 עדיין לא תומך בפרוטוקול המקורי של קפקא ומחייב עבודה מול הממשקים הייעודיים של קלאודפלייר. בחברה מבטיחים תמיכה עתידית בספריות קפקא ושכבת ביצועים מהירה יותר, אך בינתיים מדובר בעיקר בהבטחה לעתיד.
לא הייתי ממהר להגר.
מקורות
- Announcing Cloudflare K2: serverless event streamshttps://blog.cloudflare.com/cloudflare-k2-streams/
- Get started · Cloudflare K2 docshttps://developers.cloudflare.com/k2/get-started
- Basin Pipelines · Cloudflare Basin Pipelines Docshttps://developers.cloudflare.com/pipelines
- Durability · Cloudflare R2 docshttps://developers.cloudflare.com/r2/reference/durability
- Overview · Cloudflare Queues docshttps://developers.cloudflare.com/queues
- Cloudflarehttps://weba.co.il/tools/cloudflare/
- Backendhttps://weba.co.il/glossary/backend/
- Serverlesshttps://weba.co.il/glossary/serverless/
הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.