فهم وسطاء الرسائل. تعلم آليات المراسلة باستخدام ActiveMQ و كافكا. الفصل 1

مرحبا بالجميع!

بدأت بترجمة كتاب صغير:
«فهم وسطاء الرسائل"
المؤلف: Jakub Korab ، الناشر: O'Reilly Media، Inc. ، تاريخ النشر: يونيو 2017 ، ISBN: 9781492049296.

من مقدمة الكتاب:
"... سيعلمك هذا الكتاب كيفية التفكير في أنظمة مراسلة الوسطاء، ومقارنة بين تقنيتين من تقنيات الوساطة المشهورة: Apache ActiveMQ وApache Kafka. وسيحدد حالات الاستخدام ومحركات التطوير التي دفعت مطوريها إلى اتباع أساليب مختلفة تمامًا في نفس المجال - الرسائل الوسيطة بين الأنظمة. سننظر إلى هذه التقنيات من الألف إلى الياء ونسلط الضوء على تأثير خيارات التصميم المختلفة على طول الطريق. ستكتسب فهمًا عميقًا لكلا المنتجين، وفهمًا لكيفية استخدامهما وما لا ينبغي استخدامه، وفهمًا لما يجب البحث عنه عند التفكير في تقنيات المراسلة الأخرى في المستقبل. ... "

الأجزاء المترجمة حتى الآن:
الفصل 1 مقدمة
الفصل 3. كافكا

سأقوم بنشر الفصول المكتملة عند ترجمتها.

الفصل 1

مقدمة

تعد المراسلة من نظام إلى نظام واحدة من أقل مجالات تكنولوجيا المعلومات فهمًا. كمطور أو مهندس معماري، قد تكون على دراية بأطر العمل وقواعد البيانات المختلفة. ومع ذلك، فمن المحتمل أن تكون لديك معرفة عابرة بكيفية عمل تقنيات المراسلة المعتمدة على الوسيط. إذا شعرت بهذه الطريقة، فلا تقلق، فأنت في صحبة جيدة.

عادةً ما يكون اتصال الأشخاص بالبنية الأساسية للمراسلة محدودًا للغاية. غالبًا ما يتصلون بنظام تم إنشاؤه منذ فترة طويلة، أو يقومون بتنزيل التوزيع من الإنترنت وتثبيته في PROM والبدء في كتابة التعليمات البرمجية له. بعد تشغيل البنية التحتية في PROM، يمكن أن تكون النتائج مختلطة: يتم فقدان الرسائل بسبب الفشل، أو أن الإرسال لا يعمل كما توقعت، أو أن الوسطاء "يعلقون" منتجيكم أو لا يرسلون رسائل إلى المستهلكين.

يبدوا مألوفا؟

أحد السيناريوهات الشائعة هو أن رمز المراسلة الخاص بك يعمل بشكل جيد في الوقت الحالي. حتى يتوقف عن العمل. تؤدي هذه الفترة إلى تهدئة الحذر لدى الشخص وإحساسه الزائف بالأمان، مما يؤدي إلى المزيد من التعليمات البرمجية المستندة إلى معتقدات خاطئة حول السلوك الأساسي للتكنولوجيا. عندما تبدأ الأمور في السوء، فإنك تواجه حقيقة مزعجة: أنك لم تفهم حقًا السلوك الأساسي للمنتج أو المقايضات التي اختارها المؤلفون، مثل الأداء مقابل الموثوقية، أو المعاملات مقابل قابلية التوسع الأفقي .

بدون فهم عميق لكيفية عمل الوسطاء، يقوم الأشخاص بالإدلاء بتصريحات تبدو معقولة حول أنظمة المراسلة الخاصة بهم، مثل:

  • لن يفقد النظام الرسائل أبدًا
  • ستتم معالجة الرسائل بالتسلسل
  • ستؤدي إضافة المستهلكين إلى جعل النظام أسرع
  • سيتم تسليم الرسائل مرة واحدة فقط

ولسوء الحظ، فإن بعض هذه العبارات مبنية على افتراضات لا تنطبق إلا في ظل ظروف معينة، في حين أن البعض الآخر ببساطة غير صحيح.

سيعلمك هذا الكتاب كيفية التفكير في أنظمة المراسلة القائمة على الوسيط من خلال المقارنة بين تقنيتين شائعتين للوسيط: Apache ActiveMQ وApache Kafka. وسيحدد حالات الاستخدام وحوافز التطوير التي دفعت مطوريها إلى اتباع أساليب مختلفة تمامًا في نفس المجال - المراسلة بين الأنظمة مع وسيط وسيط. سننظر إلى هذه التقنيات من الألف إلى الياء ونسلط الضوء على تأثير خيارات التصميم المختلفة على طول الطريق. ستكتسب فهمًا عميقًا لكلا المنتجين، وفهمًا لكيفية استخدامهما وما لا ينبغي استخدامه، وفهمًا لما يجب البحث عنه عند التفكير في تقنيات المراسلة الأخرى في المستقبل.

قبل أن نبدأ، دعونا نتناول الأساسيات.

ما هو نظام المراسلة ولماذا هو مطلوب؟

لكي يتمكن تطبيقان من التواصل مع بعضهما البعض، يجب عليهما أولاً تحديد واجهة. يتضمن تحديد هذه الواجهة تحديد وسيلة نقل أو بروتوكول، مثل HTTP أو MQTT أو SMTP، والتفاوض على تنسيقات الرسائل التي سيتم تبادلها بين الأنظمة. قد تكون هذه عملية صارمة، مثل تحديد مخطط XML مع متطلبات تكلفة حمولة الرسالة، أو قد تكون أقل رسمية، مثل اتفاق بين مطورين على أن جزءًا من طلب HTTP سيحتوي على معرف العميل.

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

تشتمل أنظمة المراسلة عادةً على وسيط بين نظامين يتفاعلان لزيادة فصل (فصل) المرسل عن المستلم أو المستلمين. في هذه الحالة، يسمح نظام المراسلة للمرسل بإرسال رسالة دون معرفة مكان وجود المستلم، أو ما إذا كان نشطًا، أو عدد الحالات الموجودة.

دعونا نلقي نظرة على بعض المقارنات لأنواع المشاكل التي يحلها نظام المراسلة ونقدم بعض المصطلحات الأساسية.

نقطة إلى نقطة

تذهب ألكسندرا إلى مكتب البريد لترسل لآدم طردًا. تذهب إلى النافذة وتسلم الطرد للموظف. يلتقط الموظف الطرد ويعطي ألكسندرا إيصالاً. لا يحتاج آدم إلى أن يكون في المنزل عندما يتم إرسال الطرد. ألكسندرا واثقة من أنه سيتم تسليم الحزمة إلى آدم في وقت ما في المستقبل ويمكنها الاستمرار في ممارسة أعمالها. في وقت لاحق في وقت ما يتلقى آدم طردًا.

هذا مثال لنموذج المراسلة من نقطة إلى نقطة. يعمل مكتب البريد هنا كآلية توزيع الطرود، مما يضمن تسليم كل طرد مرة واحدة. يؤدي استخدام مكتب البريد إلى فصل عملية إرسال الطرود عن تسليم الطرود.
في أنظمة المراسلة الكلاسيكية، يتم تنفيذ نموذج نقطة إلى نقطة من خلال طابور. تعمل قائمة الانتظار كمخزن مؤقت يصرف أولاً (يدخل أولاً يخرج أولاً) يمكن الاشتراك فيه بواسطة مستهلك واحد أو أكثر. يتم تسليم كل رسالة فقط لأحد المستهلكين المشتركين. تحاول قوائم الانتظار عادةً توزيع الرسائل بشكل عادل بين المستهلكين. سوف يتلقى مستهلك واحد فقط هذه الرسالة.

يتم تطبيق مصطلح "دائم" على قوائم الانتظار. دقة هي خاصية خدمة تضمن أن نظام المراسلة سيستمر في إرسال الرسائل في حالة عدم وجود مشتركين نشطين حتى يشترك المستهلك في قائمة الانتظار لتسليم الرسائل.

غالبًا ما يتم الخلط بين الموثوقية إصرار وعلى الرغم من استخدام المصطلحين بالتبادل، إلا أنهما يخدمان وظائف مختلفة. تحدد المثابرة ما إذا كان نظام المراسلة يكتب رسالة إلى نوع من التخزين بين استلامها وإرسالها إلى المستهلك. قد تكون الرسائل المرسلة إلى قائمة الانتظار مستمرة وقد لا تكون كذلك.
يتم استخدام المراسلة من نقطة إلى نقطة عندما تتطلب حالة الاستخدام إجراءً لمرة واحدة على الرسالة. تشمل الأمثلة إيداع الأموال في حساب أو إكمال أمر التسليم. سنناقش لاحقًا سبب عدم قدرة نظام المراسلة بمفرده على توفير التسليم لمرة واحدة ولماذا يمكن لقوائم الانتظار في أفضل الأحوال توفير ضمان التسليم مرة على الاقل.

الناشر المشترك

تطلب غابرييلا رقم المؤتمر. وأثناء اتصالها بالمؤتمر، فإنها تسمع كل ما يقوله المتحدث، إلى جانب بقية المشاركين في المكالمة. وعندما تصمت، يغيب عنها ما يقال. وعند إعادة الاتصال، تستمر في سماع ما يقال.

هذا مثال لنموذج المراسلة نشر الاشتراك. يعمل الاتصال الجماعي كآلية بث. لا يهتم الشخص الذي يتحدث بعدد الأشخاص المتصلين حاليًا بالمكالمة - ويضمن النظام أن أي شخص متصل حاليًا سيسمع ما يقال.
في أنظمة المراسلة الكلاسيكية، يتم تنفيذ نموذج المراسلة للنشر والاشتراك من خلال قمم. يوفر الموضوع نفس طريقة البث التي توفرها آلية عقد المؤتمرات. عندما يتم إرسال رسالة إلى موضوع ما، يتم توزيعها لجميع المستخدمين المشتركين.

المواضيع عادة غير موثوق به (غير دائم). تمامًا مثل المستمع الذي لا يستطيع سماع ما يقال في مكالمة جماعية عندما ينقطع اتصال المستمع، يفقد المشتركون في الموضوع أي رسائل يتم إرسالها أثناء عدم اتصالهم بالإنترنت. ولهذا السبب يمكننا القول أن المواضيع توفر ضمان التسليم ليس أكثر من مرة لكل مستهلك.

تُستخدم عادةً رسائل النشر والاشتراك عندما تكون الرسائل إعلامية بطبيعتها ولا يكون فقدان رسالة واحدة أمرًا مهمًا بشكل خاص. على سبيل المثال، يمكن لموضوع ما أن ينقل قراءات درجة الحرارة من مجموعة من أجهزة الاستشعار مرة واحدة في الثانية. النظام المهتم بدرجة الحرارة الحالية والذي يشترك في موضوع ما لن يقلق إذا فاتته رسالة - ستصل رسالة أخرى في المستقبل القريب.

النماذج الهجينة

يضع موقع المتجر على الويب رسائل الطلب في "قائمة انتظار الرسائل". المستهلك الرئيسي لهذه الرسائل هو الجهاز التنفيذي. بالإضافة إلى ذلك، يجب أن يكون لدى نظام التدقيق نسخ من رسائل الطلب هذه للتتبع اللاحق. لا يمكن لكلا النظامين السماح بمرور الرسائل، حتى لو كان النظامان نفسهان غير متاحين لبعض الوقت. يجب ألا يكون الموقع على علم بالأنظمة الأخرى.

تتطلب حالات الاستخدام غالبًا مجموعة من نماذج النشر والاشتراك والمراسلة من نقطة إلى نقطة، كما هو الحال عندما تتطلب أنظمة متعددة نسخة من رسالة وتكون الموثوقية والاستمرارية مطلوبة لمنع فقدان الرسالة.

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

النماذج الهجينة ليست جديدة ويمكن استخدامها في معظم أنظمة المراسلة، بما في ذلك ActiveMQ (عبر الوجهات الافتراضية أو المركبة التي تجمع بين المواضيع وقوائم الانتظار) وKafka (ضمنيًا، كخاصية أساسية لتصميم وجهتها).

الآن بعد أن أصبح لدينا بعض المصطلحات الأساسية وفهم لما يمكننا استخدام نظام المراسلة من أجله، فلننتقل إلى التفاصيل.

تمت الترجمة: tele.gg/middle_java

الجزء المترجم التالي: الفصل 3. كافكا

يتبع ...

المصدر: www.habr.com

إضافة تعليق