GH GambleHub

נתונים זורמים בין צמתים

(סעיף: מערכת אקולוגית ורשת)

1) מהות ומטרות

זרמי נתונים בין צמתים הם ערוצים מנוהלים של אירועים, מצבים וחפצים בין תפקידי מערכת אקולוגית (מאשרים/קוראים/אינדקסים/גשרים/שערים/חנויות/אנליטיקה). מטרות:
  • חיזוי: SLOs יציב על ידי עיכוב/הצלחה/רעננות.
  • אמינות: התנגדות להפסדים, שכפולים, שינויים.
  • אבטחה וציות: הצפנה, חתימות, תושבות.
  • סקלביליות: Geo-הפצה, מחיצה, QOS.

2) טקסונומיה זרימה

1. מישור בקרה: הגדרות, פישפלאגים, מדיניות ניתוב/הגבלה.
2. מישור נתונים - אירוע: אירועי תחום ('הפקדה. ", התשלום. ',' גשר. ').
3. מישור נתונים - זרם: נחלים ארוכי חיים (gRPC/WebSocket) עבור אותות ומדדים חיים.
4. Batch/Backfill: הורדות של פרוסות היסטוריות, שידור חוזר, תמונות.
5. שכפול/אנטי-אנטרופיה: סנכרון מצב, רחמים, זרמי CRDT.
6. טלמטריה/יכולת תצפית: רישומים/מדטים/שבילים/רצועה צדדית, לא מפריעים ל-UX הראשי.

לכל סוג יש כיתות QOS וכללי מגש/סדר משלו.

3) טופולוגיות וניתוב

Hub-and-Speak: צירים אזוריים כצמיגים; משחק - צמתים לחיקוי.
Mesh/P2P: רשת חלקית לשכפול/רכילות.
Edge-Tiered: שערי קצה דקים (rate-limit/cache) = אשכולות אזוריים עבים.
Geo-Routing: Anycast/Latency-Adware LB + כללי התמחות.

מפתח - מחיצה: "מחיצה _ key = Id' Derunant' tentiId' נותן סדר וקנה מידה צפויים.

4) תחבורה ופורמטים

HTTP/2/3, gRPC/QUIC - איחור נמוך, ריבוי לקחים, שמירה.
קפקא/פולסר/NATS - תורים עם התמדה/מפלגות/קבוצות צרכנים.
שקע אינטרנט - דחוף אירועים והזנות חיות.
פורמטים: Protobuf/Avro (תוכניות עם אבולוציה), JSON עבור API חיצוני.
פניות חשיש וקבלות מרקל לאימות יושר.

5) הזמנה, משלוח וסיום

מודל משלוח:
  • לפחות פעם אחת (ברירת מחדל; idempotency/defutup נדרש).
  • אפקט של פעם אחת בדיוק באמצעות Outbox/Inbox + צרכן אידמפוטנטי.
  • סדר: מובטח בתוך המפלגה; הסדר הבין מפלגתי אינו מובטח.
  • finalization: statuses 'associated' extreme (K) # invalid (reorg); לחלון אופטימי-מחלוקת.

6) אידמפוטנטיות ודידופ

מפתח אידמפוטנטיות לאירועים:
  • 'idepotency _ key = ${chainId}|${block}|${tx}|${logIndex}|${type'
כללים:
  • קפוא על ידי מפתח, TTL של חלון השכפול 72 שעות.
  • עבור קונפליקט, מטען הוא מדיניות ”מקור האמת” (עדיפות, גירסה, חתימה).
  • עבור בקשות HTTP, הכותרת היא 'Idempotency-Key' + רישום תגובה.

7) תורים, תרמיל גב ומכסות

תורים: מסיבות לפי מפתח; DLQ להודעות ”רעילות”.
תרמיל אחורי: קרדיטים/אסימונים, מקסימום אינפלציה גבול, מעגל מפסק.
מכסות/QOS: P0 (קריטי), P1 (תוצר), P2 (נפח). פיצול בריכות/מגבלות RPS/bytes/s/מנויים.
בקרת כניסה: סירוב מוקדם לבקשות ”יקרות”, שמירה לפי טווח/גודל.

8) מודלים עקביים ונתונים

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

9) ביטחון ואמון

MTLS בין צמתים, מצמיד מפתח, סיבוב.
חתימות הודעה/webhook, חותמת זמן וחלונות אנטי הילוך חוזר.
הצפנה על go/במנוחה; הפרדה בין מפתחות אזוריים.
PII-מזעור: tokenization, איסור על מידע אישי בתוויות/מדדים.

10) יעילות: אריזה, דחיסה, מטמון

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

11) דיאגרמות נתונים (אזכורים)

זרימה/רישום הרבה

sql
CREATE TABLE streams (
name TEXT PRIMARY KEY,
partitions INT,
qos TEXT,        -- P0    P1    P2 retention_days INT,
schema_version TEXT
);

CREATE TABLE offsets (
stream TEXT, partition INT, consumer_group TEXT,
offset BIGINT, updated_at TIMESTAMPTZ,
PRIMARY KEY (stream, partition, consumer_group)
);

יומן אירועים (idempotent upsert)

sql
CREATE TABLE events_core (
id UUID PRIMARY KEY,
idempotency_key TEXT UNIQUE,
ts TIMESTAMPTZ,
partition_key TEXT,
type TEXT,
payload JSONB,
status TEXT,      -- observed    confirmed    finalized    invalidated signature TEXT
);

DLQ/הסגר

sql
CREATE TABLE dlq (
id UUID PRIMARY KEY,
stream TEXT, partition INT, offset BIGINT,
reason TEXT, payload JSONB, ts TIMESTAMPTZ
);

12) מדיניות (YAML)

QOS וגבולות

yaml qos:
P0: { ack_timeout_ms: 2000, retries: 3, backoff_ms: [100,400,800], rps_per_org: 1500 }
P1: { ack_timeout_ms: 5000, retries: 2, rps_per_org: 800 }
P2: { best_effort: true, rps_per_org: 200 }
limits:
max_message_bytes: 1048576 max_stream_subscriptions_per_client: 20

פינליזציה וחלונות

yaml finality:
eth-mainnet: { k: 12 }
polygon:   { k: 256 }
optimistic: { k: 0, challenge_minutes: 20 }

ניתוב/תושבות

yaml routing:
prefer_local_region: true fallback: [nearest_healthy, master_hub]
residency:
eu: ["eu"]
uk: ["uk"]

13) יכולת תצפית: SLI/SLO

SLI (ליבה):
  • Latency p95/p99 (כניסה = יציאה, לכל זרם/QOS).
  • שיעור הצלחה/ירידה.
  • תור לאג p95 וצרכן לג במסיבה.
  • רעננות p95 (בלע = לצרוך).
  • Reorg/Invalid Rate (אם onchain).
  • Dedup Effective (% מהלקוחות נספגים באופן אידמפוטי).
  • יחס Geo-Hit (מקומי שירות).
SLO (ציוני דרך):
  • P0 latency p95 latency 400 ms; הצלחה ב-99. 95%; Queue-lag p95 multo 2 visition; רעננות p95 בלום 60.
  • דדופ יעילות - 99%; DLQ על 0. אחוז אחד מהתנועה.

לוחות מחוונים: Streams Core/Lag & Tresness/QOS & Errors/Geo/Security (mTLS/signatures).

14) דפוסי צרכנים

Outbox/Inbox: הוצאה לאור אטומית ויישום אידמפוטנטי.
אפקט של פעם אחת בדיוק, לאחסן את המפתח האחרון.
סימני מים: נתונים מאוחרים.
תופעות לוואי אידמפוטנטיות: שאילתות חיצוניות עם מפתח ויומן תגובה בלבד.

15) מצבי הידרדרות

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

16) שחרור ללא זמן ונדידה

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

17) תקנות הפעלה

יום: דיווח SLO (latency/success/lag/treeness), ביקורת חתימה, בדיקת DLQ.
שבועי: שחזור של אצבעות/מכסות, מבחן DR (אתחול מתוך תצלום), ניתוח יעילות דדאפ.
מבחני כאוס (הפסד/ג 'יטר, כשל ברוקר, התפרצות מחדש), שינוי של חלונות סופיים.
לפני השחרור: קנרית 120 דקות, שערי SLO, תוכנית רולבק.

18) תקריות משחק

תור-לאג/פיצוץ צרכן-לאג

1. הגדלת הצרכנים/KEDA; 2) לחלק מחדש את הצדדים; 3) להקפיא את P2 ואת העבודות הגדולות; 4) ניתוח מפתחות ”חמים”.

ב. צמיחה של p95 Latency P0

1. P2-throttle, עדיפות P0; 2) שערים/ברוקרים בקנה מידה; 3) מטמון לספרי עיון בלבד; 4) פליטה חריגה יותר.

סי. High DLQ/dubbing

1. בדוק את מפתח האידמפוטנטיות/TTL; 2) חיזוק dedup; 3) להגביל את המפיק הרועש; 4) שידור חוזר אחרי תיקון.

ד. מזימות דריפט/חוזים

1. אפשר מצב נוקשה (לחתוך אלה לא תקפים); 2) להודיע למפיק; 3) שחרר את המתאם; 4) קווי עדכון.

הפרה של תושבות/חתימות

1. יחידת ייצוא/תעלות; 2) סיבוב מפתחות/סרטות; 3) ביקורת חשבונות ונתיחה שלאחר המוות; 4) עדכון מדיניות.

19) רשימת מימושים

1. הגדר את סוגי הזרם ואת המפתח המחולק.
2. אפשר אידמפוטנטיות/dedup וסיכום עם חלונות K/מחלוקת.
3. הגדרות תורים, QOS, מכסות, ותרמיל גב.
4. הפעל MTLS/חתימות ומדיניות מגורים.
5. הזן סכימות/רגיסטרים (זרמים, קיזוזים, dlq) וטלמטריה SLI/SLO.
6. לארגן את הנדידה הקנרית/כחולה-ירוקה ומעגל ללא זמן.
7. לעבוד על מצבי השפלה וספרי משחקים.

20) גלוסרי

Backpressure - בקרת טעינת קלט (credits/tokens/limits).
DLQ - ”תור מת” להודעות בעיה.
מבני מידע עם פתרון סכסוכים ללא תיאום.
סופית - אי-הפיכות של האירוע/מצב.
בדיוק-פעם אחת אפקט - חזרה-בטוח תוצאה על לפחות פעם אחת משלוח.
סימן מים - מארק עיבוד התקדמות לאירועים מאוחרים.
הדרה של מקרים מושחתים מהבריכה.

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

Contact

צרו קשר

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

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

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

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

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