GH GambleHub

תורים: Kafka ו ־ RabbitMQ

תורים: קפקא, רביב קיו

(סעיף: טכנולוגיה ותשתיות)

תקציר

תורות מסרים הן הבסיס לארכיטקטורה מוכוונת אירועים (EDA) ב-iGaming. הם מקשרים מיקרו-רווחים של תעריפים, תשלומים, אנטי-הונאה, סי-אר-אם, הודעות וניתוחים. בפועל, שתי כיתות של פתרונות נפוצות ביותר:
  • אפאצ 'י קפקא (Apache Kafka) הוא יומן אירועים מבוזר המתמקד בהזרמה, שכפול וסולם אופקי דרך צדדים.
  • RabbitMQ הוא מתווך תור AMQP עם ניתוב גמיש (החלפה/קשירה), סדרי עדיפויות, TTL, אישורים ומשימות תור קלאסיות.

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

איפה זה מתאים ב iGaming

קפקא - בחר מתי:
  • אנחנו צריכים אירועי TPS גבוהים (הימורים, אירועי משחק, טלמטריה) וסולם אופקי דרך הצדדים.
  • קור/חם לצרוך מחדש (מחדש קריאה של נתוני קלטת), שימור ודחיסה עבור אגרגטים (שיווי משקל, מצב שחקן) חשובים.
  • אנו זקוקים לתהליכי זרם (Kafka Streams/ksqLDB/Flink) עבור צבירה בזמן אמת: מובילי טורניר, מגבלות משחק אחראיות, אותות נגד הונאה.
RabbitMQ - בחר מתי:
  • אנחנו צריכים תורים קלאסיים: בדיקת KYC, דחייה/תשלומים חוזרים ונשנים, שליחת דואר אלקטרוני/SMS/Push,
  • ניתוב גמיש (נושא/ישיר/פנוט), סדר עדיפויות, TTL, עיכוב, אות מתה ותבניות RPC.
  • הגבלות לכל צרכן קפדניות (prefetch/QOS), ניהול עומסים פשוט ומגשים מהירים נדרשים.

תוצאה תכופה: קפקא לאירועים ואנליטיקה + RabbitMQ לתזמור ושילוב.

מודל נתונים וניתוב

קפקא

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

RabbitMQ

Exchanges (ישיר/פנוט/נושא/כותרות) + bindings = הודעות נכנסות לתורים.
אישור (ack/nack/request), המוציא לאור מאשר, סדרי עדיפויות, TTL, אות מתה (DLX/DLQ).
תורים של מניין (רפסודה) לזמינות גבוהה; תורים עצלנים להצלת הרמב "ם.

משלוח מבטיח ואידמפוטנציה

לכל היותר-פעם: אין מגשים מחדש; סיכון לאובדן, עיכוב מינימלי.
לפחות פעם אחת: ברירת המחדל הסטנדרטית של acplicates _ idempotent actors (מפתח בקשה/העברה, upsert, dedup table, outbox) אפשרית.
בדיוק-פעם אחת: בקפקא, יצרן אידמפוטנטי + נושאי עסקה + צריכה מוסכמת מושגת בשיתוף, אך לעתים קרובות יותר היא יקרה וקשה יותר; ברביטמק - מוגבל ועם עצמות. בתשלום אמיתי/הימור זורם, לפחות פעם אחת + אידמפוטנטיות קפדנית מיושמת.

תרגול אידמפוטנטיות:
  • idempotency-keys (UUID/ULID) לכל אירוע/פקודה.
  • תבנית Outbox במסד הנתונים + Change Data Capture (Debezium).
  • Dedup by (מפתח, created_at) בשורה נפרדת עם TTL.

סדר/סדר מסרים

קפקא מבטיח סדר בתוך המפלגה. בחר את המפתח כך שכל "החיים" של הישות (לדוגמה, "player _ id' עבור שיווי משקל) יהיו במפתח אחד.
פקודת RabbitMQ אינה מובטחת לחלוטין עם משלוחים חוזרים ונשנים/צרכנים מרובים; צינורות קריטיים לסדר - טובים יותר בקפקא או באמצעות צרכן יחיד פעיל וסריאליזציה זרם.

עיצוב של טיפוסים ותורים

קפקא:
  • גרנולריות: תחום. אירוע '(לדוגמה,' תשלומים. הפקדה. נוצר ').
  • מפתחות: "שחקן _ id'," חשבון _ id', "הימור _ id' להזמנה.
  • חבורות = N על ידי המטרה TPS (חוק: 1 אצווה ו ־ X הודעות/שנייה/צרכן); הנח מניות לצמיחה.
  • שימור: אירועים - שעות/ימים; דחיפה - עבור ”מדינות”.
RabbitMQ:
  • החלפת תחומים: תשלומים. ישירות, 'סיכון. נושא ".
  • תורים לצרכנים: "קיק. בודק. q ',' psp. קורות אינטרנט. לנסות מחדש. Q '.
  • DLQ לכל תור עבודה עיכוב עבור גיבוי.
  • פרפטיץ 'מפרט תורים מקובלים, מניין עבור HA.

שגיאות, מגשים מחדש ו DLQs

סיווג שגיאות: temble (network/PSP 5xx) ac retrays; fatal (אימות, מזימה) # מיד DLQ.
גיבוי מעריכי + ג 'יטר, הגבלת מגש מחדש, זיהוי כדור רעל.
תורים נפרדים על ידי צעדים (5, 1 מ ', 5 מ', 1h).
מפעיל DLQ: התראה, עקבות, ניתוח ידני, הזרקה מחדש עם תיקון.

חוזה נתונים ושרטוטים

השתמש ברישום Avro/Protobuf + Schema (עבור תקן קפקא - דה פקטו).
ורסיונינג: שינויים התואמים לאחור (הוספת שדות אופציונליים), איסור על שבירת נדידות.
שדות PII - הצפנה/טוקניזציה; לציית GDPR ותקנות מקומיות.

ניטור, תצפית ו SLO

מדדים של יצרנים/צרכנים: פיגור, תפוקה, טעויות, רטריי, זמן עיבוד.
לוגס + איתור (correlation ID: ”trace _ id',” message _ id').
p99-latency של פרסום/משלוח, פיגור צרכני מותר, זמן התאוששות אחרי קבצים.
התראות לצמיחת DLQ, עודף פיגור, ירידה במסיבות/מניין.

בטיחות וציות

TLS במעבר, הצפנה סודית (SOPS/Vault), מוגבלת ACL/RBAC.
נושאים/תורים נפרדים עבור תחומים רגישים (תשלומים, KYC).
יומן ביקורת של פרסומים/מנויים, אחסון מפתחות מחוץ לקוד.
דרישות אזוריות (EU/Turkey/Latam): שימור, איחסון, מיסוך.

זמינות גבוהה, סובלנות פגומה ו DR

קפקא:
  • מקבץ של 3-5 ברוקרים לפחות; שכפול. פקטור 3.
  • insync. העתקים ואקלים = הכל עבור רשומות עמידה.
  • שכפול אזורי (MirrorMaker-2) עבור ד "ר
RabbitMQ:
  • תורים של מניין ל-HA, מספר זוגי/אי-זוגי של צמתים עם מניין.
  • פדרציה/חפירה עבור שכפול מרכז נתונים, תסריטי DR.
  • דוכן קר/חם, עובר בדיקות.

ביצועים וכוונון

קפקא (מפיק):
  • "להמתין. גב 'אצווה'. גודל ”לקצב;” דחיסה. סוג '(lz4/zstd).
  • 'אקס = הכל', אבל לצפות לאחות; מנגינה 'max. פנימה. טיסה. בקשות. חיבור עם אידמפוטנטיות.
קפקא (תיווך/נושא):
  • מספיק מסיבות; NVMe מניע 10/25G הרשת; הגדרות JVM GC.
קפקא (צרכן):
  • ניהול קבוצתי נכון, מקסימום. מרווח. גברת, עצור את המסיבות בדרך חזרה.
RabbitMQ (מפיק):
  • המו "ל מאשר בקתות; ערוצים מחדש שימוש.
RabbitMQ (תורים/צרכנים):
  • 'prefetch' (למשל. 50-300) על ידי זמן טיפול; תורים עצלנים לתורים גדולים.
  • פוסט תורים חמים לצמתים; כוונון/תיאור קובץ TCP.

דפוסים טיפוסיים עבור iGaming

Outbox + Kafka לפרסום אמין של אירועי דומיין (הימור שהונח, הפקדה רשומה).
RPC RabbitQ לבקשות סינכרוניות לאינטגרציות (בדיקת מסמך KYC, חישוב מחדש).
תבנית סאגה: תזמור אירועים (קפקא) וצוותים (רביב-קיו) עם צעדים פיצויים.
הודעות מאוורר: מאירוע אחד = CRM, אנטי-הונאה, אנליטיקה.
Smart-Restruction PSP מחובר לרשת עם עיכובים מתקדמים ו-DLQ.

נדידה ואדריכלות היברידית

התחל עם RabbitMQ עבור ”מערכת הפעלה”, הוסף קפקא לאירועים ואנליטיקה.
Publicate Publications: Service # outbox # מחבר בשני הכיוונים (Kafka + RabbitMQ) עד לייצוב מלא.
היגר בהדרגה מנויי אנליטיקה/צבירה זרם לזרמי קפקא/ksqLDB.

רשימת בחירת מיני

1. טען/TPS> עשרות אלפים/שניות?
2. צריך שימור וקריאה מחדש כמו ממגזין?
3. ניתוב גמיש, סדר עדיפויות, העברה מאוחרת, RPC?
4. סדר מפתח קפדני וסולם אופקי = קפקא (key/parts).
5. משימות פשוטות/עבודה-kew עם בקרה מקורית = RabbitMQ.
6. באופן אידיאלי, שילוב: Kafka (אירועים) + RabbitMQ (תזמור).

דוגמאות לתצורות מינימליות

דוגמה: Retrai מתעכב ו-DLQ ברביטקו- (באמצעות מדיניות)

תור עבודה: "psp. קורות אינטרנט. &qapos

תור Retras: 'psp. קורות אינטרנט. לנסות מחדש. 1 מ '. Q '(TL = 60, DLX מצביע חזרה לפעולה)

DLQ: "psp. קורות אינטרנט. dlq&fs

מדיניות (קונספטואלית):
  • 'psp. קורות אינטרנט. Q 'ub-x-מת-אותיות החלפה = psp. לנסות מחדש. החלפה &fost
  • 'psp. קורות אינטרנט. לנסות מחדש. 1 מ '. Q 'ub' x-הודעה-tl = 60000, 'x-מת-אותיות החלפה = psp. עבודה. החלפה &fost
  • 'psp. קורות אינטרנט. די קיי ניטור ודיבוג ידני.

דוגמה: נושא ההימורים של קפקא

נושא: "הימורים. ממוקמת. V1, מסיבות: 24, RF = 3, שימור 7 ימים.
מקש ההודעה הוא "player _ id' or 'het _ id' (בחר מה חשוב יותר לסדר).
Protobuf/Avro message _ id', 'שחקן _ id',' יתד ',' סיכויים ',' ts', 'idmpotency _ key'.

בדיקה ואיכות

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

תקציר

קפקא - כביש מהיר אירוע והזרמה: הזמנת מפתח, שימור/דחיסה, TPS גבוה, אנליטיקה בזמן אמת.
RabbitMQ - תור משימה מבצעי: ניתוב גמיש, אישורים, סדרי עדיפויות, מגשים מחדש/DLQ, RPC.
ב-iGaming, התרגול הטוב ביותר הוא שימוש משלים: אירועים ואנליטיקה ב-Kafka, משימות אינטגרציה/תזמור ב-RabbitMQ, עם תקני סכימה אחידים, אידמפוטנטיות, ניטור ו-SLOs קפדניים.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

Telegram
@Gamble_GC
התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

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