GH GambleHub

ארכיטקטורת אירועים

ארכיטקטורת אירועים (EDA)

1) מהו מאורע ומדוע EDA

אירוע - עובדה לא משתנה שכבר התרחשה בתחום (”Tayer Veried”, ”Disconted Capted”). EDA בונה אינטגרציות סביב פרסום עובדות אלה והתגובות אליהן:
  • קישוריות חלשה של שירותים,
  • הגדלת הצרכנים באופן עצמאי,
  • שידור חוזר/סידור מחדש של תחזיות,
  • ביקורת שקופה.

EDA לא מבטל API סינכרוני - זה משלים אותם על ידי הבאת תלויות שירות צולבות בשכבה האסינכרונית.


2) סוגי אירועים

דומיין: עובדות עסקיות משמעותיות.
אינטגרציה: ”תמונות ”/שינויים עבור מערכות חיצוניות (Susterupted, WalletBreathed Changed).
טכני: מחזור חיים וטלמטריה (פעימות לב, כשל).
פקודות (לא אירועים, אלא בקרבת מקום): ”Do X” (תשלום על) הוראות.

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


3) חוזי אירועים ותרשימים

Evro/Protobuf/JSON Schema + Schema Registry; אסטרטגיית תאימות: ”אחורה” לאבולוציה צרכנית, ”מלא” בנושאים קריטיים.
אירועים שונים (id, מקור, סוג, זמן, נושא, datacontentype) - כותרות אחידות.
metadata: "event _ id' (ULID/UUID)," התרחש _ at "," מפיק "," schema _ version "," correlation _ id'/" causation _ id', "idempotency _ key".
Versioning: להוסיף רק שדות, איסור על שינוי שם/הפסקות סמנטיות; סוגים חדשים - נושאים/סוגים חדשים.

דוגמה (אברו, שבר):
json
{
"type":"record","name":"PaymentCaptured","namespace":"events.v1",
"fields":[
{"name":"event_id","type":"string"},
{"name":"occurred_at","type":{"type":"long","logicalType":"timestamp-micros"}},
{"name":"payment_id","type":"string"},
{"name":"amount","type":{"type":"bytes","logicalType":"decimal","precision":18,"scale":2}},
{"name":"currency","type":"string"},
{"name":"player_id","type":"string"}
]
}

4) משלוח, סדר ועקביות

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

מודל קריאה: תחזיות ומטמונים יכולים להיות בסופו של דבר - להראות ”עדכון בהתקדמות”... ולהשתמש באסטרטגיות RNOT למסלולים נוקשים.


5) Outbox/Inbox SuperCDC

Outbox: השירות כותב עובדה למסד הנתונים שלו ולשולחן היוצא בעסקה אחת כפול העובד מפרסם לאוטובוס.
תיבת דואר אלקטרוני: המאורע _ id 'with procession court for deflication.
CDC (Change Data Capture): זרימה של שינויים מבסיס הנתונים (binlog/WAL) לאוטובוס כדי לבנות אינטגרציות ללא שינויי יישום.
idempotency: עיבוד על ידי "idempotency _ key "/" event _ id', לא משנה את העולם החיצון עד קבוע.


6) מיקור אירועים CQRS

CQRS: מודל כתיבה נפרד ותחזיות קריאה; התחזיות בנויות מאירועים ויכולות לפגר מאחור.
מקור אירועים: מצב צבירה = גלגול של האירועים שלה. יתרונות: ביקורת מלאה/שידור חוזר; חסרונות: מורכבות של נדידה/מזימות/תמונות.
מנהג: ES - לא בכל מקום, אלא במקום שבו ההיסטוריה והפיצוי חשובים; CQRS - כמעט תמיד ב EDA.


7) סאגות: תזמור וכוריאוגרפיה

תזמור: המתאם שולח פקודות ומחכה לאירועי תגובה; נוח לתהליכים מורכבים (KYC # Deposit # Bonus).
כוריאוגרפיה: שירותים מגיבים זה לזה; קל יותר אבל קשה יותר לאתר.
תמיד להגדיר פיצויים ומועדי שלב.


8) עיצוב טופולוגיה (קפקא/רביב-קיו)

קפקא

נושא לאירוע תחום: "תשלומים. שבויים. v1 ',' שחקנים. מאומת. v1 '.
מחלק מפתח: ”player _ id'/” arnet _ id' - היכן שהסדר חשוב.
'חישוב מחדש. פקטור = 3 ',' דקות. insync. העתקים = 2 ', מפיק' acks = all'.
שימור: בזמן (למשל. 7-90 ימים) ו/או דחיסה (המדינה האחרונה לפי מפתח).
נושאים לניסוי חוזר ודי-אל-קיו עם גיבוי.

RabbitMQ

החלפות: "נושא "/" ישיר", ניתוב מקש "תשלומים. שבויים. v1 '.
עבור מאוורר רחב - 'נושא' + כמה תורים; עבור RPC/פקודות - תורים נפרדים.
תורים של קוורום עבור HA; החלפת אותיות מתות ב-TTL.


9) יכולת תצפית ו ־ SLO eda

SLI/SLO:
  • latency (occurred_at acted): p50/p95/p99.
  • Lag/age: עיכוב צרכני (Kafka processor lag, Rabbit backlog age).
  • דרך הוצאה לאור/עיבוד.
  • קצב DLQ ופרופורציה של חזרות.
  • הצלחה של עסקאות (למשל: ”הפקדה אישרה רישום 5C”).

מנהגים:

קורלציה של אירועים באמצעות 'trace _ id'/' correlation _ id' (Otel).
מקרים מאיזון = מדדים.
לוחות מחוונים ”Producer # Broker # Consumer” עם התראות שרפה.


10) שידור חוזר, שימור ומילוי גב

חזור כדי לבנות מחדש תחזיות/תיקון באגים: סע להקרנה/מקום חדש, ואז תחליף קריאה.
שימור: דרישות משפטיות/עסקיות (GDPR/PCI); שדות רגישים - הצפנת ו/או אסימון.
הילוך אחורי: נושאים/תורים חד-פעמיים, הגבלת RPS ברורה כדי לא לחנוק את המעבד.


11) בטיחות וציות

TLS במעבר, MTLS ללקוחות פנימיים.
אישור: לכל נושא/לכל חילוף ACL; רב-גוניות באמצעות שם/ווסט.
PII: למזער שדות במקרה; מעטפת metadata בנפרד, תשלום מוצפן במידת הצורך.
ביקורת גישה לאירועים, לאסור מפתחות ”כל-יכול”.
מדיניות Reservation and Right to Delete (GDPR): אזכור נתונים או אירועים במצבה ומחיקה בתחזיות.


12) בדיקות באדה

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


13) הגירה של ”CRUD Integrations # EDA”

1. זהה את עובדות התחום.
2. מוטבע יוצא בשירותי המקור.
3. לפרסם אירועי דומיין מינימליים ולחבר 1-2 תחזיות.
4. נטרל בהדרגה אינטגרציות סינכרוניות של נקודה, והחלפתם במנויים.
5. תרשים סוג ומדיניות תאימות.
6. להאריך אירועי הוספה בלבד עם שדות; פורצת רק דרך סוגים חדשים.


14) אנטי דפוסים

אירועים = ”DTO API” (שמן מדי, תלוי במודל פנימי) - לשבור צרכנים.
חוסר רישום סכמות ותאימות - שילוב ”שברירי”.
פרסום מקוד וכתיבה לבסיס הנתונים אינם אטומיים (אין תיבת יוצא) - אתה מאבד אירועים.
”בדיוק פעם אחת בכל מקום” - מחיר גבוה ללא תועלת; טוב יותר לפחות פעם אחת עם אידמפוטנטיות.
אחד ”אוניברסלי” מפתח מחיצה = מחיצה חמה.
שידור חוזר היישר אל תוך הקרנת הייצור - שובר סל "ד מקוון.


15) רשימת יישומים (0-45 ימים)

0-10 ימים

זהה את אירועי התחום ואת המפתחות שלהם (גרנולות של סדר).
לפרוס את סכימה רישום ולאשר את אסטרטגיית התאימות.
הוסף תיבת היוצא/תיבת הדואר הנכנס לשירותי 1-2; מעטפת אירועי קלוד מינימלית.

11-25 ימים

הזן Retry/DLQ, גיבוי, אידמפוטנטיות של מפעילים.
לוחות מחוונים: lag/age/end-to-end; התראות על שרפה.
תיעוד אירועים (קטלוג), בעלים ותהליכי סקירה.

26-45 ימים

שידור חוזר/סידור מחדש של ההקרנה הראשונה; ריצה חוזרת ומילוי אחורי.
מדיניות אבטחה (TLS, ACL, PII), שימור, נהלי GDPR.
תוהו ובוהו רגיל וימי משחק לברוקר ולצרכנים.


16) מדדי בגרות

100% מאירועי התחום מתוארים על ידי מזימות ורשום.
תיבת הדואר היוצא מכסה Tier-0/1 כל היצרנים/הצרכנים.
p95 latency-to-end ו lag צרכני בתוך מטרות ו 99%.
הילוך חוזר/הילוך אחורי הם אפשריים ללא השבתה; יש ספרי הפעלה מאומתים 'ו.
ורסיונינג: שדות חדשים - ללא שבירה; צרכנים ישנים לא נופלים.
אבטחה: TLS + mTLS, ACL לכל נושא, יומני גישה, מדיניות PII/שימור.


17) קטעים קטנים

קפקא מפיק (פרסום אמין, רעיונות):
properties acks=all enable.idempotence=true max.in.flight.requests.per.connection=1 compression.type=zstd linger.ms=5
מטפל צרכני (idempotency, pseudocode):
python if inbox.contains(event_id): return # дедуп process(event)            # побочные эффекты детерминированы inbox.commit(event_id)        # atomically with side-effect commit_offset()
RabbitMQ Retry באמצעות DLX (רעיון):
  • Queue: משימות "= על נאק = DLX 'משימות. לנסות מחדש. 1M (TTL = 60) # לחזור 'Tasks'; עוד 5 מטר/15 מטר.

18) מסקנה

EDA הופך אינטגרציה לזרם של עובדות עסקיות עם חוזים ברורים וניהול עקבי. לבנות את היסודות: תרשימים + רישום, תיבת יוצא/תיבת דואר אלקטרוני, מפתחות הזמנה, מפעילים אידמפוטנטים, SLO ויכולת תצפית, שמירה בטוחה ושידור חוזר. אזי, יהיו המאורעות ”מקור האמת” שלך להגדרה, אנליטיקה ותכונות חדשות - ללא קשרים שבריריים ונדידת לילה. ‏

Contact

צרו קשר

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

התחלת אינטגרציה

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

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

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