GH GambleHub

מתווכי הודעות

1) מדוע מתווכי הודעות

הברוקר מוריד את היצרנים והצרכנים בזמן/מהירות/אמינות:
  • שיא החציצה והחלקה, תרמילאי.
  • קריאה/כתיבה באופן עצמאי.
  • יכולת תצפית והילוך חוזר של אירועים.
  • תבניות ארכיטקטוניות: מונע אירועים, CQRS, מיקור אירועים, תיבת דוא "ל.

2) מודלים ומונחים בסיסיים

2. 1 קפקא (מודל לוג)

Topice Ach parties (יומנים מסודרים) # קיזוז מהצרכנים.
קבוצת צרכנים: קרא מקבילות, איזון מסיבות.
שמירה לפי זמן/נפח; דחיסת מפתח.
סמנטיקה: מינימום - לפחות פעם אחת, עם הגדרות - ביעילות בדיוק-פעם אחת (יצרני אידמפוטנטים + עסקאות).
סדר: מובטח בתוך המפלגה.

2. 2 NATS (נושאים, latency נמוך)

נושא (נושא) עם היררכיה וכרטיסי בר ('foo. ", 'foo. >`).
מודים: פאב/תת, תור-קבוצות (מאוורר-אאוט עם הפצת עבודה), בקשה-תגובה (RPC מהיר).
CORE NATS-emeral, laterly-low; הזרם - התמדה/שימור/חזרות.
סדר: המאמץ הטוב ביותר, אין ערובה גלובלית חזקה; עם ג 'ט סטרים - הזמנה על הנחל, אבל הזמנה מחודשת נדירה במקרה של כשלים היא אפשרית.

3) משלוח סמנטיקה ועקביות

סמנטיקהקפקאליבת NATSNATS Jetstream
"לכל היותר פעם אחת,נדיר (בדרך כלל מיותר)ברירת מחדל (אין אישור)האם אני יכול
לפחות פעם אחתתקן (להתחייב קיזוז לאחר עיבוד)עם מדיניות אקסטנדרטי (מדיניות אק, redelivery)
בדיוק-פעם אחת (יעיל)יצרן אידמפוטנטי + עסקאות; כיורים אידמפוטנטיםn/aשהושג ברמת הצרכן (idempotency), ברוקר לא נותן עסקאות כמו קפקא

אידמפוטנטיות ודיאדופ הם האחריות של היישום/חבורה, גם כאשר ”פעם אחת בדיוק” קפקא.

4) סדר, מחיצה ומפתחות

קפקא

בחירת מפתח ההודעה קובעת את הסדר המקומי החזק.
Catilant _ id, "order _ id'. הימנע מפתחות חמים.
איזון: N מצדדים בקריאת רמת המקביליות.

NATS

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

5) שימור, שידור חוזר ודחיסה

קפקא

שימור: "שימור. ms/bates '.
Compaction: מאחסן את ”הערך האחרון לפי מפתח” (מתאים לתמונות/מטמונים/סאגות).
שידור חוזר: כל צרכן יכול ”להחזיר אחורה” קיזוזים.

JetStream

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

6) עסקאות, תיבות ועקביות

קפקא

יצרן אידמפוטנטי ("אפשר. אידמפוטנטיות = אמת): הגנה מפני שכפולים.
עסקאות: הקלטה אטומית של מספר צרורות + תתחייב צרכנות-offsets * read-process-write ללא ”חורים”.
תיעוד של אירוע עסקי וקו מתאר בעסקת מסד נתונים אחת, העובד מפרסם בקפקא.

NATS

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

7) RPC ובקשה-תגובה

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

דוגמה (Go, NATS בקשה-תגובה):
go resp, err:= nc. Request("profile. get", []byte(`{"id":42}`), 200time. Millisecond)

8) מבצע וטופולוגיות

8. 1 קפקא

אשכול: ברוקרים + שומרי (לפני גרסאות ישנות) או Kraft (metadata חדש).

שכפול - אזור RF/3, ISR/Controlers

Multi-Area: Maker 2/Cluster Linking; נכס-אחריות/נכס-נכס עם מדיניות-קונפליקט.
קיבולת דיסק/רשת: קרא מתוך ”throughput × reservation × lockas”.

8. 2 NATS

אשכול: צמתים רבים, אשכול-על (Geo-distribution), עלים עבור פריפרלים/קצה.
Jetstream: מיקום זרמים על ידי צומת סטים (מיקום), שכפול (R = 1.. 5).
איחור נמוך צפוי, פדרציה קלה.

9) בטיחות

קפקא

TLS (mTLS), SASL: ScRAM, OAutheBarer.
ACL בנושאים/קבוצות/עסקאות.
הצפנה ”במנוחה” (OS/disks) + מדיניות רשת.

NATS

זהויות NKy/JWT, חשבונות-מרכזייה, ACL לכל נושא.
אם-טי-אל-אס בין צמתים ללקוחות.
בידוד דייר (חשבונות) + גבולות.

10) יכולת תצפית ומדדי ביצועים

קפקא

'Bytesin/Out', 'Country Queue', 'Underreplication Partations', סטטיסטיקות GC/FS.
נושא/חלק: LogEndOffset, עיכוב צרכני (קריטי).
מפיק/צרכן: retrai, "אצווה. גודל ”,” להישאר. גב ',' להביא. מוקשים, בתים, טעויות.
כלים: JMX, Cruise Control (איזון מחדש), Schema Registry.

NATS/JetStream

שרת: conn/msgs/sec, RTT, CPU/Mem, זיהוי צרכנים איטי.
JetStream: לכל זרם/צרכן - lag, redireview, acks, bytes אחסון.
ניטור: סוף נקודה מובנית, nsc/adm-CLI, לוחות מחוונים.

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

קפקא

גשושיות גדולות ונשארות. גברת מוכיחה תפוקה ודחיסה של פי-99.
דחיסה (lz4/zstd) חוסכת רשת/דיסק.
מחיצות לפי מספר הצרכנים/ליבות, אבל לא מעל.
NVME העדיף, XFS/EXT4 עם ”Notatime”.

NATS

מסרים קטנים, קשרים רבים הם הנורמה; שמור על קבוצות תור ”רחבות”.
JetStream: מנגינה ”max _ ack _ indition”, משוך נגד דחיפה, גודל חבורות.
תרגיל רקע: ”בקרת לב”, ”פעימות לב”, גבולות צד שרת.

12) תבניות אינטגרציה

Outbox/Inbox (הן קפקא והן NATS).
סאגה: תזמור אירועים; סבא של ”סאגה _ id + step”.
שינוי לכידת נתונים (CDC): Debezium # Kafka; ב ־ NATS - תבנית ”המוציא לאור מבסיס הנתונים מפעיל/יומן”.
עיבוד זרם: Kafka Streams/Flink/Spark; במעבדים/תכונות צד שלישי של NATS, צרכני JetStream.
תור אותיות מתות (Did Letter Towe או DLQ) ומדיניות נסיון מחדש (exponential backoff + jitter).

13) דוגמאות הגדרות

13. 1 קפקא: יצירת נושא ומפיק

bash kafka-topics. sh --create --topic orders \
--partitions 12 --replication-factor 3 \
--config cleanup. policy=delete \
--config retention. ms=604800000 # 7d
properties producer. properties bootstrap. servers=broker:9092 acks=all enable. idempotence=true batch. size=65536 linger. ms=10 compression. type=zstd

13. 2 זרמי קפקא: מכונות אידמפוטנטיות (סקיצה)

java builder. <String, Order>stream("orders")
.groupByKey()
.aggregate(/... /)
.toStream()
.to("orders-agg");

13. 3 NATS JETStream: זרם + צרכן (NATS CLI)

bash nats stream add ORDERS --subjects "orders. " --retention limits \
--storage file --max-bytes 100GB --replicas 3 --discard old

nats consumer add ORDERS ORDERS-WORKERS --filter "orders. created" \
--deliver pull --ack explicit --max-deliver 6 --backoff "1s,5s,30s,2m"

13. 4 NATS בקשה-תגובה (Go)

go nc, _:= nats. Connect("tls://nats:4222", nats. Secure(tlsConf))
sub, _:= nc. QueueSubscribe("calc. sum", "workers", func(m nats. Msg) {
//... process...
m. Respond([]byte("42"))
})

14) קפקא נגד נאטס לבחור: מדריך מהיר

אנחנו צריכים שידור חוזר, שמירה לטווח ארוך, דחיסה, תהליכי זרם כבדים.
צריך RPC מהיר, מאוורר/מאוורר-אין עם מיקרו-לאטנטיות, פעולה פשוטה, Edge/IOT # NATS (ליבה).
אנחנו צריכים התמדה + מאוורר-אאוט, אבל בלי הפלטפורמה הכבדה ”בול עץ” של NATS JETSTREM.
מפתח קפדני וצו העברה = קפקא.

15) תכנון קיבולת (מפושט)

קפקא

1. דרך: ”inbound _ MBps × RF × retention_days × 86400”.
2. חבורות: ”היעד _ concurncy” × stock 1. 5-2 ×.
3. רשת: p99 + שכפול + דחיסת יצרן.

NATS/JetStream

1. הודעות/שניות ופריטה ממוצעת.
2. שימור x העתקים כפול אחסון.
3. צרכנים מגבילים (ack-תלוי ועומד, redireview), מעבד לסריאליזציה.

16) פעולה בטוחה: רשימת בדיקות

[ ] TLS/mTLS מאופשר, סודות מסתובבים.
[ ] ACL/חשבונות/מכסות (לכל דייר).
[ ] אידמפוטנטיות על צרכנים, DLQ,
[ ניטור שגיאות ] Lag/preserput/Trage; התראות על URP (קפקא), סופה מחודשת (NATS).
[ לוחות ] קיבולת: מחיצות, אחסון, p99.
[ ] מבחני אי ספיקת צומת/אזור, ימי משחק, הילוך חוזר/הילוך אחורי.
[ מתועדים מפתחות סכימה ]/JSON Schema.
[ ] מדיניות השימור/הדחיסה/TTL מיושרת עם ציות.
[ ] גרסאות ברוקר/לקוח מתעדכנות באופן קבוע; תאימות פרוטוקול חוט מאומתת.

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

מפתח חם (כל האירועים של אותה תעודת זהות) = זרם ”רותח” אחד. שארדי/חוצץ.
נסיגה ללא אידמפוטנטיות = אפקטים כפולים.
הודעות ענקיות (MB-Tins) * מקטע GC/הפוגה. אחסן מטען באובייקט, שלח קישורים.
ערבוב RPC והזרמה ב- Kafka = מחזור חיים מורכב/סדר.
JetStream בתור ”DWH לטווח ארוך” = off-label; לאחסן במשך זמן רב במיטות אובייקט/טור.
אין DLQ = ”רעיל” הודעות ספין בלי סוף.
דיסקים נשכחים הם מלאים, אשכול לעצור.

18) FAQ

קיו: אני יכול לעשות ”בדיוק פעם אחת” בסוף הצינור?
א. בפועל - כן ביעילות: קפקא (יצרן אידמפוטנטי + עסקאות) וכיורים אידמפוטנטיים (מפתח, אפסרט). ב NATS - באמצעות אידמפוטנטיות/dedup ביישום.

קיו: מה לבחור עבור מיליון רפ "קים קטנים?
A: NATS Core: Microlatency, בקשה-תגובה, חיבור אור וקבוצות תור.

קיו: צריך דחיפה וצילומי הון? ‏

א ': קפקא זה ניקוי. מדיניות = קומפקטית, מפתח = צבירה/משאב.

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

קיו: אזור מרובה וד "ר?
א. קפקא - מייצר מראה 2/Cluster קישור, אחריות נכס עם סקונדי RPO. NATS - צביר ־ על/leafnodes; Jetstream שיקוף/העתקים לפי אזור.

19) סיכומים

קפקא ו ־ NATS סוגרים מצבים שונים: רישומי אירועים עמידים של קפקא, תפאורה גבוהה, טרנסאקציונליות והילוך חוזר; NATS הוא אוטובוס אולטרה-לייט ללינה נמוכה, RPC ומאוורר פשוט, עם JetStream להתמדה. תבחר מתוך סמנטיקה משלוח, סדר ושמירה, איחור ועלויות תפעול. עיצוב מפתחות/צדדים, שימור, DLQ ויכולת תצפית - וארכיטקטורת האירועים שלכם תהיה צפויה, ניתנת לחיזוי ואמינה.

Contact

צרו קשר

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

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

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

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

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