GH GambleHub

سماسرة الرسائل

1) لماذا وسطاء الرسائل

الوسيط يوحد المنتجين والمستهلكين حسب الوقت/السرعة/الموثوقية:
  • ذروة التخزين المؤقت والتنعيم، والظهري.
  • اقرأ/اكتب مقياس بشكل مستقل.
  • إمكانية ملاحظة الأحداث وإعادة تشغيلها.
  • الأنماط المعمارية: مدفوعة بالحدث، CQRS، مصادر الأحداث، outbox/inbox.

2) النماذج والشروط الأساسية

2. 1 كافكا (نموذج سجل)

الموضوع → الأطراف (الجذوع المطلوبة) → تعويضات من المستهلكين.
مجموعة المستهلكين: اقرأ التوازي، التوازن الحزبي.
الاحتفاظ حسب الوقت/الحجم ؛ ضغط رئيسي.
الدلالات: الحد الأدنى - مرة واحدة على الأقل، مع الإعدادات - بشكل فعال مرة واحدة بالضبط (المنتجون الأغبياء + المعاملات).
الأمر: مضمون داخل الحزب.

2. 2 NATS (مواضيع، زمن انتقال منخفض)

الموضوع (الموضوع) مع التسلسل الهرمي وبطاقات البدل ('foo. '،' foo. >`).
الأوضاع: حانة/فرعية، قوائم انتظار المجموعات (مروحة مع توزيع العمل)، طلب الرد (سريع RPC).
Core NATS - زمن انتقال سريع الزوال ومنخفض للغاية ؛ JetStream - الثبات/الاحتفاظ/التكرار.
النظام: بذل قصارى الجهود، وعدم وجود ضمان عالمي قوي ؛ مع JetStream - الطلب على البث، ولكن إعادة الترتيب النادرة في حالة الفشل ممكنة.

3) دلالات التسليم والاتساق

دلالاتكافكاNATS Coreناتس جيت ستريم
على الأكثر مرة واحدةنادر (عادة غير ضروري)الافتراضي (بدون تأكيدات)هل يمكنني
مرة واحدة على الأقل(الالتزام بالتعويض بعد التجهيز)مع سياسة ackالمعيار (سياسة ack، إعادة التسليم)
بالضبط مرة واحدة (فعال)والمنتج الخفي + المعاملات ؛ الأحواض الخفيةن/أالذي تحقق على مستوى المستهلك (الخصوصية)، لا يعطي السمسار المعاملات كما هو الحال في كافكا

الغباء والتفريغ هما مسؤولية التطبيق/الكدمة، حتى عندما «مرة واحدة بالضبط» في كافكا.

4) الطلب والتقسيم والمفاتيح

كافكا

يحدد اختيار مفتاح الرسالة الحزب → محلي قوي.
Ключи: 'مجموع _ معرف'، 'مستأجر _ معرف'، 'طلب _ معرف'. تجنب المفاتيح الساخنة.
التوازن: N parts ≈ قراءة مستوى التوازي.

NATS

في Core، تقوم مجموعة قائمة الانتظار بالتوازن.
يتم خلط تيار JetStream بواسطة الموضوعات ؛ التركيز على المروحة الواسعة/المروحة مع زمن انتقال منخفض.

5) الاحتفاظ وإعادة التشغيل والضغط

كافكا

الاحتفاظ: 'الاحتفاظ. ms/bytes '.
الدمج: يخزن «القيمة الأخيرة حسب المفتاح» (مناسب للقطات/المخابئ/الملاحم).
إعادة التشغيل: يمكن لأي مستهلك «إعادة» التعويضات.

جيت ستريم

التدفقات: الملفات/المذكرات الخلفية، سياسة التخزين حسب الوقت/البايت/عدد الرسائل.
المستهلكون: سحب/دفع، متين/سريع الزوال، مرشح حسب البادئات.
إعادة التشغيل: إعادة التسليم أو القراءة من البداية/التعويض الشبيه (التسلسل).

6) المعاملات والصندوق الخارجي والاتساق

كافكا

المنتج اللطيف ('enable. :: الحماية من الازدواجية.
المعاملات: تسجيل ذري لعدة دفعات + موازنة المستهلك → نمط القراءة وعملية الكتابة بدون «ثقوب».
صندوق المعاملات الخارجي: سجل لحدث تجاري وخط خارجي في صفقة قاعدة بيانات واحدة، ينشره العامل في كافكا.

NATS

لا توجد معاملات «عبر التيار» كما هو الحال في كافكا ؛ استخدم صندوق الخروج/البريد الوارد والمستهلكين الأحمق (المفاتيح، المتجر).

7) RPC والطلب - الرد

كافكا غير مريح لـ RPC (ارتفاع النفقات العامة، الطلب/الإجابات أكثر صعوبة). استخدم أوامر/أحداث غير متزامنة.
NATS: مثالي للرد على الطلب (مللي ثانية، ارتباط، مهلة).

مثال (اذهب، طلب - رد NATS):
go resp, err:= nc. Request("profile. get", []byte(`{"id":42}`), 200time. Millisecond)

8) التشغيل والطوبولوجيا

8. 1 كافكا

المجموعة: الوسطاء + ZooKeeper (قبل الإصدارات القديمة) أو KRaft (بيانات وصفية جديدة).

النسخ المتماثل - المنطقة RF≥3، ISR/المراقبين

متعدد المناطق: MirrorMaker 2/Cluster Linking ؛ الأصول والخصوم والأصول مع سياسات التضارب.
سعة القرص/الشبكة: تُقرأ من «خشنة الاحتفاظ × × نسخ طبق الأصل».

8. 2 ناتس

العنقود: العديد من العقد، المجموعة الفائقة (التوزيع الجغرافي)، النقاط الورقية للأجهزة الطرفية/الحافة.
JetStream: وضع التيارات بواسطة مجموعات العقدة (وضع)، التكرار (R = 1. 5).
WAN: زمن انتقال منخفض بشكل متوقع، اتحاد سهل.

9) السلامة

كافكا

TLS (mTLS)، SASL: SCRAM، OAuthBearer.
الرباط الصليبي الأمامي بشأن المواضيع/المجموعات/المعاملات.
التشفير «في الراحة» (OS/disks) + سياسات الشبكة.

NATS

هويات nkey/JWT، وحسابات المشغل، و ACL لكل موضوع.
mTLS بين العقد والعملاء.
عزل المستأجر (الحسابات) + الحدود.

10) إمكانية الرصد ومقاييس الأداء

كافكا

Брокер: «BytesIn/Out'،» RequestQueue «،» UnderReplicatedPartions'، إحصائيات GC/FS.
الموضوع/الجزء: "logEndOffset'، تأخر المستهلك (حرج).

المنتج/المستهلك: retrai، 'batch. حجم '،' باقية. السيدة '،' جلب. القليل من الأخطاء

الأدوات: JMX، Cruise Control (إعادة التوازن)، Schema Registry.

NATS/JetStream

الخادم: conn/msgs/sec، RTT، CPU/mem، اكتشاف المستهلك البطيء.
JetStream: لكل تيار/مستهلك - تأخر، إعادة التسليم، آكس، بايت التخزين.
المراقبة: نقطة النهاية المدمجة، nsc/adm-CLI، لوحات القيادة.

11) الأداء والضبط

كافكا

الجزار الكبيرة و 'باقية. ms 'provive الإنتاجية والضغط p99.
الضغط (lz4/zstd) يحفظ الشبكة/القرص.
أرقام التقسيم حسب عدد المستهلكين/النوى، ولكنها لا تنفق فوق النفقات.
محركات الأقراص: تفضل NVMe، XFS/EXT4 مع «noatime».

NATS

الرسائل الصغيرة، والعديد من الاتصالات هي القاعدة ؛ حافظ على مجموعات الطابور «واسعة».
JetStream: ضبط «max _ ack _ about»، سحب مقابل دفع، حجم الدفعات.
الضغط الخلفي: «FlowControl'،» IdleHeartbeat'، حدود جانب الخادم.

12) أنماط التكامل

Outbox/Inbox (في كل من Kafka و NATS).
SAGA: تنظيم الحدث ؛ الجد بواسطة «saga _ id + step».
Change Data Capture (CDC): Debezium → Kafka; في NATS - نمط «الناشر من قاعدة البيانات المشغلات/السجلات».
معالجة التيار: Kafka Streams/Flink/Spark ؛ في NATS - معالجات/ميزات الطرف الثالث، مستهلكي JetStream.
قائمة انتظار Dead Letter (DLQ) وسياسات إعادة التجربة (التراجع الأسي + 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 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 سريع، مروحة/مروحة مع microlatency، تشغيل بسيط، edge/IoT → NATS (Core).
نحن بحاجة إلى المثابرة + المروحة، ولكن بدون منصة «تسجيل» ثقيلة → NATS JetStream.
المفتاح الصارم وأمر المعاملات → كافكا.

15) تخطيط القدرات (مبسط)

كافكا

1. الإنتاجية: أقراص «inbound _ MBps RF 86400».
2. الدفعات: «الهدف _ العملة المتزامنة» × الأسهم 1. 5-2 ×.
3. الشبكة: p99 + تكرار + ضغط المنتج.

NATS/JetStream

1. رسائل/ثانية ومتوسط إنتاجية →.
2. الاحتفاظ × النسخ المتماثلة → التخزين.
3. حدود المستهلكين (معلقة، إعادة التسليم)، وحدة المعالجة المركزية للتسلسل.

16) التشغيل الآمن: قائمة مرجعية

  • تمكين TLS/mTLS، وتدوير الأسرار.
  • ACL/الحسابات/الحصص (لكل مستأجر).
  • الخصوصية على المستهلكين، DLQ، والخلوات الجيتر.
  • رصد التأخر/الإنتاجية/الخطأ ؛ تنبيهات حول URP (كافكا)، عاصفة إعادة التسليم (NATS).
  • لوحات القيادة السعة: الفواصل، التخزين، ص 99.
  • اختبارات فشل العقدة/المنطقة، أيام اللعبة، إعادة التشغيل/الردم.
  • تم توثيق مفاتيح Schema Registry/JSON Schema.
  • يتم مواءمة سياسات الاحتفاظ/الضغط/TTL مع الامتثال.
  • يتم تحديث نسخ الوسيط/العملاء بانتظام ؛ تم التحقق من توافق بروتوكول الأسلاك.

17) الأنماط المضادة

المفتاح الساخن (جميع الأحداث من نفس الهوية) → تيار واحد «يغلي». شاردي/عازل.
التراجع دون الغباء → تأثيرات مزدوجة.
رسائل ضخمة (MB-tens) → تجزئة/توقف GC. تخزين الحمولة في الجسم، إرسال الروابط.
خلط RPC والبث في كافكا → دورة حياة/طلب معقد.
JetStream باعتباره «DWH طويل الأجل» → خارج التسمية ؛ يخزن لفترة طويلة في سرير الكائن/العمود.
لا توجد رسائل DLQ → «سامة» تدور إلى ما لا نهاية.
الاحتفاظ المنسي → الأقراص ممتلئة، توقف عنقودي.

18) الأسئلة الشائعة

س: هل يمكنني القيام «مرة واحدة بالضبط» في نهاية خط الأنابيب ؟

ج: من الناحية العملية - نعم فعليًا: كافكا (منتج خفي + معاملات) وأحواض خفية (مفتاح، مزعج). في NATS - من خلال الخصوصية/التخلص في التطبيق.

س: ماذا تختار لمليون RPCs صغيرة/ثانية ؟

ج: NATS Core: Microlatency، الرد على الطلب، اتصالات الإضاءة ومجموعات الانتظار.

س: هل تحتاج إلى ضغط ولقطات من الثروة ؟

ج: تنظيف كافكا с. policy = compact ', key = colgate/resource.

س: كيف تتعامل مع التأخر ؟

ج: زيادة عدد الدفعات/العمال، وتقليص وقت المعالجة والدفعة والسبقة، وتحسين التصحر، وتعزيز السماسرة/محركات الأقراص رأسياً.

س: متعدد المناطق و DR ؟

ج: كافكا - MirrorMaker 2/Cluster Linking، الأصول والخصوم مع RPO≈sekundy. NATS - supercluster/leafnodes ؛ تعكس JetStream/النسخ المتماثلة حسب المنطقة.

19) المجاميع

تغلق كافكا و NATS أوضاعًا مختلفة: كافكا - سجلات الأحداث الدائمة، والإنتاجية العالية، والمعاملات، وإعادة التشغيل ؛ NATS هي حافلة خفيفة للغاية لوقت الوصول المنخفض و RPC ومروحة بسيطة، مع JetStream للمثابرة. اختر اختيارك من دلالات التسليم والطلب والاحتفاظ بالوقت وتكاليف التشغيل. مفاتيح/حفلات التصميم والاحتفاظ و DLQ وقابلية الملاحظة - وستكون بنية الحدث الخاصة بك قابلة للتنبؤ وقابلة للتطوير وموثوقة.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

Telegram
@Gamble_GC
بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.