GH GambleHub

قوائم انتظار الرسائل: RabbitMQ، كافكا

قوائم انتظار الرسائل: RabbitMQ، كافكا

1) متى تختار

RabbitMQ (AMQP 0-9-1/1. 0، قوائم الانتظار الكلاسيكية، قوائم انتظار النصاب، التدفقات)

مناسب لـ: RPC/أوامر، سير العمل، المهام القصيرة، توجيه fanout/time، تأكيدات مرنة، التحكم في الأولوية.
الإيجابيات: دلالات التوجيه الغنية (التبادلات)، "أساسي. qos' (مقدمة)، لكل رسالة TTL/تأخير، أنماط RPC المريحة (الرد على)، بداية سهلة.
السلبيات: التاريخ مخزن في طابور، مقياس أفقيًا عبر قوائم الانتظار/الشظايا ؛ إنتاجية عالية التكلفة مع تدفقات كبيرة جدًا.

أباتشي كافكا (سجل الأحداث، الحفلات، مجموعات المستهلكين)

مناسب لـ: تدفقات الأحداث، التدقيق، مصادر الأحداث، ETL/integrations (Connect)، RPS/MBps عالية، إعادة/إعادة معالجة، معالجة التدفق (Streams/ksqlDB).
الإيجابيات: مجلة طويلة المدى، تحجيم من قبل الأطراف، إعادة ثابتة، ضغط رئيسي.
السلبيات: نموذج Pull + Parts - ليس لـ RPC صغير ؛ النظام داخل الحزب فقط ؛ إدارة المخطط/قابلية التشغيل البيني هي مسؤولية الفريق.

💡 الممارسة: الأوامر/المهام → RabbitMQ، الأحداث/التدقيق/ETL → كافكا. في الأنظمة الكبيرة، كلاهما يتعايشان.

2) دلالات التسليم والثوابت

على الأكثر مرة واحدة: لا توجد عمليات إعادة طباعة ؛ بسرعة، خطر الخسارة.
مرة واحدة على الأقل: مع التراجعات ؛ تتطلب حماقة المستهلك.
مرة واحدة بالضبط: يمكن تحقيقه في ظروف محدودة (Kafka TX + idempotent product + conservated sink; RabbitMQ - من خلال جدول التفريغ/المفاتيح الخفية).
الأمر: RabbitMQ - أمر قائمة الانتظار (يمكن انتهاكه مع retras/multi-Consumers) ؛ كافكا - اطلب في الحزب، المفتاح يحدد التقسيم.

ثوابت المجال: الأموال/الأرصدة - من خلال المجلات/الملاحم والأفرقة الحمقاء ؛ لا تعتمد على LWW.

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

Outbox/InBox: التسجيل الذري للحدث في قاعدة البيانات → النشر إلى قائمة الانتظار (out box) والاستهلاك غير اللائق مع سجل المعالجة (inbox).
DLQ (حروف ميتة): بعد محاولات/أخطاء N - في تنبيه DLQ +.
إعادة المحاولة/التأخير: RabbitMQ - TTL + تبادل الحروف الميتة ؛ كافكا - إعادة تجربة الموضوعات مع التراجع.
الطلب/الرد: RabbitMQ - 'الرد _ على' + 'الارتباط _ id' ؛ كافكا - نادرًا، فقط بأنماط خاصة.
التعويضات: ملحمة على الأحداث ؛ كل عملية لها معكوس.

4) تصميم المفتاح والطوبولوجيا

أرنب MQ

التبادلات: "مباشرة"، "موضوع"، "fanout'،" رؤوس ".
مفتاح التوجيه: يحدد ضربة (ضربات) قائمة الانتظار. لتحديد الأولويات - قوائم انتظار منفصلة.
QoS: 'prettch' (على سبيل المثال 50-300) معدل/زمن انتقال الأرصدة.
قوائم انتظار النصاب: قوائم انتظار مكررة على الطوافة ؛ عكس الاستبدال الكلاسيكي.
التدفقات: تدفق مع تعويضات (مثل كافكا) للإنتاج العالي/إعادة التشغيل.

كافكا

أقسام → الموضوع: تخطيط «# أقسام» على الإنتاجية المستهدفة والتوازي (الزيادة المتوافقة مع الخلف أسهل من الانخفاض).
المفتاح: جميع سجلات مفتاح واحد - في جزء واحد (ضمان النظام حسب المفتاح).
عامل التكرار: 3 للمواضيع الإنتاجية، 'min. insync. النسخ المتماثلة = 2 '+' acks = all' للموثوقية.
الاحتفاظ: حسب الوقت/الحجم ؛ ضغط - يخزن القيم الأخيرة حسب شواهد المفتاح + للحذف.

5) Retrai، DLQ، الخصوصية

أرنب MQ

تكرر: لكل رسالة TTL + DLX (تبادل الحروف الميتة) مع التراجع (على سبيل المثال، 1 م → 5 م → 15 م).
الخصوصية: 'الارتباط _ id '/' message-id' + جدول الرسائل المعالجة (TTL) أو الأوامر الحتمية.
التأكيدات: يدوي. ' الأساسية. nack (طلب = خطأ) 'в DLQ.

كافكا

التكرارات: مواضيع فردية لإعادة المحاكمات ؛ يلتزم المستهلك بالتعويض بعد الآثار الجانبية الناجحة.
المعالجة مرة واحدة بالضبط (EOS): تمكين المنتج. ideputence = true ', transactional productor/consumer,' read _ committed 'on Consumer; (على سبيل المثال، Kafka→Kafka أو Kafka→DB من خلال معاملة) - تزامن بدقة.
Dedup: عن طريق المفتاح/المفتاح الخفي على الجانب الأساسي، أو عن طريق الموضوع المضغوط.

6) الأداء والبعد

قانون ليتل: 'L = λ × W'

بالنسبة للدوامة: مطلوب تداخل 'N المخزون (1. 2–1. 5)`.
تمهيد RabbitMQ: ابدأ بـ «prefetch = 100» وقياس p99/وقت الرحلة.
أقسام كافكا: الحساب من التوازي الاستهلاكي المطلوب وهدف الإنتاجية (على سبيل المثال، الدفعة 1 مستقرة 5-20 ميجابايت/ثانية على SSD/10 جيجابايت).

7) إمكانية الرصد والتنبيهات

العام:
  • Lag/Backlog (الرسائل/البايت)، عمر الرسائل (p95/p99)، معدل الخطأ في المعالجة، معدل DLQ.
  • الوقت «publikatsiya→obrabotka» (من طرف إلى طرف).
  • خريطة التبعية: المنتج → الوسيط → المستهلك.
RabbitMQ:
  • اتصالات، قنوات، رسائل غير مربوطة، «memory _ alarm'،» disk _ free _ limit'، «طول قائمة الانتظار» p95.
  • تقارير عن Quorum (القائد، Raft log، يفتقد «النصاب ليس كافيًا»).
كافكا:
  • أقسام غير مكررة، تقلص/توسيع ISR، تغييرات وحدة التحكم.
  • أخطاء المنتج (المهلة، «وقت الطلب»)، تأخر المستهلك لكل مجموعة/تقسيم.
  • الوسيط I/O، ضرب ذاكرة التخزين المؤقت للصفحة، GC، ZooKeeper/KRaft health.

8) السلامة وتعدد الحيازات

TLS-transit encryption, authentification (SASL/PLAIN/SCRAM/OAuth, mTLS).
الإذن: vhost/الأذونات (RabbitMQ)، ACL للمواضيع/المجموعات (كافكا).
الحصص: للاتصالات والقنوات وحجم قائمة الانتظار/الموضوع وسرعة النشر/القراءة.
العزل حسب البيئات (dev/stage/prod) وبحسب مساحة الاسم/vhost.

9) التشغيل والضبط

أرنب MQ

تبادل البريد/قوائم الانتظار إلى العقد (CPU/IO capital).
قوائم الانتظار الكسولة (رسائل إلى قرص) للمستودعات الكبيرة ؛ تجنب قوائم الانتظار «الساخنة» دون قشرها.
طوابير النصاب القانوني لـ HA ؛ خطط لحجم سجل الطوافة والقرص.
TTL/سياسات الحد الأقصى للطول، طوابير الأولوية فقط للحاجة الحقيقية (باهظة الثمن).

مثال سياسة DLQ/TTL (فكرة):
bash rabbitmqctl set_policy DLX "^task\." \
'{"dead-letter-exchange":"dlx","message-ttl":60000,"max-length":100000}' --apply-to queues

كافكا

SSD/NVMe، شبكات سريعة ؛ ضبط نظام التشغيل (التبادل المنخفض، حدود الملفات).
«acks = all'،» باقٍ. الآنسة «(الجزخ)،» الضغط. النوع = zstd'/lz4 لعرض النطاق الترددي.
خيارات المستهلك: 'الحد الأقصى. استطلاع. الفاصل الزمني. السيدة '،' ماكس. استطلاع. السجلات '،' جلب. min. bytes '.
الاحتفاظ والضغط - رصيد التخزين/إعادة التشغيل.

مثال على النشر الموثوق (جافا، أفكار):
java props. put("acks","all");
props. put("enable. idempotence", "true");
props. put("max. in. flight. requests. per. connection","1");
props. put("retries","10");

10) التكامل والنظام الإيكولوجي

Kafka Connect (Sinks/Sources)، Schema Registry (Avro/JSON/Protobuf) وقابلية التشغيل البيني ('BACKWARD/FORWARD/FULL').
Kafka Streams/ksqlDB: عمليات مكثفة، نوافذ، مجمعات.
RabbitMQ Shovel/Federation: transfer between clusters/centres.
المشغلون K8s: Strimzi (كافكا)، RabbitMQ Cluster Operator ؛ بيانات GitOps.

11) قائمة التنفيذ المرجعية (0-45 يومًا)

0-10 أيام

تحديد حالات الاستخدام: الأوامر/المهام (RabbitMQ)، الأحداث/عمليات التدقيق (كافكا).
حدد المفاتيح («مفتاح التوجيه »/« مفتاح التقسيم»)، ضبط SLO «publikatsiya→obrabotka».
السياسات الأمنية الأساسية (TLS، ACL)، الحصص، DLQ/TTL.

11-25 يومًا

تنفيذ outbox/inbox، الخصوصية والوفاة.
قم بإعداد ملاذات مع التراجع (Rabbit: TTL + DLX ؛ كافكا: إعادة تجربة المواضيع).
لوحات القيادة: التأخر والعمر ومعدل DLQ والوقت من البداية إلى النهاية ؛ تنبيهات.

26-45 يومًا

عرض النطاق الترددي للضبط: prefetch/acks (Rabbit) ؛ (كافكا).
إجراءات DR (انعكاس/تكرار)، اختبارات فشل العقدة.
توثيق عقود الأحداث (المخططات) وسياسات التشغيل البيني.

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

أداة «عالمية» واحدة لجميع المهام.
غياب DLQ/TTL: السموم الأبدية (الرسائل السامة).
«بريفتش» غير محدود → جوع المستهلك، نمو p99.
كافكا بدون مفاتيح → فقدان النظام/الأطراف الساخنة افتراضيًا.
«مرة واحدة بالضبط»، بدون حاجة/انضباط حقيقي، هو شعور زائف بالأمان.
الأسرار/تسجيل الدخول في الرمز، بدون TLS/ACL.
الرمز الوصفي للمخططات/نسخ الرسائل بدون قلم المحكمة والهجرات.

13) مقاييس النضج

يتم تنفيذ Lag/age SLO ≥ 99٪ من الوقت ؛ معدل DLQ تحت السيطرة.
يغطي الفراغ 100٪ من المسارات الحرجة ؛ تم تنفيذ outbox/inbox.
يتم توثيق الاحتفاظ/الضغط، والإعادة لا تكسر المستهلكين.
تم إعداد تنبيهات حول حدود ISR/URP (كافكا) و Raft/disk (Rabbit).
يتم التحقق من عقود الأحداث (Schema Registry)، ويتم اختبار التوافق في CI.
أيام اللعب العادية: عقدة/سمسار/فشل AZ، فحص الاسترداد.

14) أمثلة على التكوينات (موجز)

RabbitMQ: البادئة والتأكيدات (cseudocode):
python channel. basic_qos(prefetch_count=200)
for msg in consume("tasks"):
try:
handle(msg)
channel. basic_ack(msg. delivery_tag)
except Transient:
channel. basic_nack(msg. delivery_tag, request = False) # will go to DLQ
مستهلك كافكا (أفكار):
java props. put("enable. auto. commit","false");
props. put("isolation. level","read_committed"); // при EOS
//...
poll -> process(idempotent) -> commitSync()

15)

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

Contact

اتصل بنا

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

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

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

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

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