مرحبا بالجميع!
بدأت ترجمة كتاب صغير:
"
فهم وسطاء الرسائل " ،
المؤلف: Jakub Korab ، الناشر: O'Reilly Media، Inc. ، تاريخ النشر: يونيو 2017 ، ISBN: 9781492049296.
من المقدمة إلى الكتاب:
"...
سوف يعلمك هذا الكتاب أن تتحدث عن أنظمة المراسلة على الوسطاء من خلال مقارنة ومقارنة بين تقنيتي وسيط شائعين: Apache ActiveMQ و Apache Kafka. هنا ستجد أمثلة على حوافز الاستخدام والتطوير التي دفعت مطوريها إلى استخدام طرق مختلفة تمامًا في نفس المجال - المراسلة بين الأنظمة باستخدام وسيط وسيط. سننظر إلى هذه التقنيات من البداية ونلقي الضوء على تأثير خيارات التصميم المختلفة على طول الطريق. ستحصل على فهم عميق لكلا المنتجين ، فهم كيفية استخدامها وينبغي عدم استخدامها ، وفهم ما يجب البحث عنه عند النظر في تقنيات المراسلة الأخرى في المستقبل ... "
الأجزاء المترجمة حتى الآن:
الفصل 1. مقدمةالفصل 2. ActiveMQالفصل 3. كافكااكتملت الترجمة: tele.gg/middle_javaسأنشر الفصول المكتملة أثناء ترجمتها.
الفصل الأول
مقدمة
تعد مراسلة نظام Intersystem واحدة من أقل المناطق تفهمًا لتكنولوجيا المعلومات. كمطور أو مهندس معماري ، قد تكون على دراية جيدة بالأطر وقواعد البيانات المختلفة. ومع ذلك ، فمن المحتمل أن يكون لديك معرفة عابرة بكيفية عمل تقنيات المراسلة القائمة على الوسيط. إذا كنت تشعر بهذه الطريقة ، فلا تقلق ، فأنت بصحة جيدة.
عادة ما يكون لدى الأشخاص اتصال محدود للغاية بالبنية التحتية للمراسلة. غالبًا ما يتصلون بنظام تم إنشاؤه منذ فترة طويلة ، أو قم بتنزيل مجموعة توزيع من الإنترنت ، وقم بتثبيتها في PROM وابدأ كتابة التعليمات البرمجية لذلك. بعد إطلاق البنية التحتية في PROM ، قد تكون النتائج متباينة: فقدان الرسائل أثناء حالات الفشل ، لا يعمل الإرسال كما هو متوقع ، أو يقوم الوسطاء "بتعليق" المنتجين أو عدم إرسال رسائل إلى المستهلكين.
يبدو مألوفا؟
سيناريو شائع هو عندما يعمل رمز المراسلة الخاص بك بشكل جيد ، في الوقت الحالي. حتى يتوقف عن العمل. تهدر هذه الفترة اليقظة وتعطي شعورا زائفا بالأمان ، الأمر الذي يؤدي إلى مزيد من الشفرة القائمة على الأفكار الخاطئة حول السلوك الأساسي للتكنولوجيا. عندما يبدأ شيء ما في الخطأ ، فأنت تواجه حقيقة غير مريحة: ألا تفهم حقًا السلوك الأساسي للمنتج أو التنازلات التي اختارها المؤلفون ، مثل الأداء مقابل الموثوقية ، أو المعاملة مقابل قابلية التوسع الأفقي.
دون فهم عميق لكيفية عمل السماسرة ، يدلي الأشخاص بتصريحات معقولة فيما يبدو حول أنظمة المراسلة الخاصة بهم ، مثل:
- لن يفقد النظام الرسائل مطلقًا
- سيتم معالجة الرسائل بالتتابع
- مضيفا المستهلكين سيجعل النظام أسرع
- سيتم تسليم الرسائل مرة واحدة فقط.
لسوء الحظ ، تستند بعض هذه العبارات إلى افتراضات تنطبق فقط في ظروف معينة ، في حين أن البعض الآخر ببساطة غير صحيح.
سوف يعلمك هذا الكتاب كيفية التحدث عن أنظمة المراسلة المستندة إلى وسيط من خلال مقارنة ومقارنة بين اثنين من تقنيات الوسيط الشائعة: Apache ActiveMQ و Apache Kafka. سنقوم هنا بوصف أمثلة للاستخدام وحوافز التطوير التي دفعت مطوريها إلى استخدام طرق مختلفة تمامًا لنفس المجال - المراسلة بين الأنظمة باستخدام وسيط وسيط. سننظر إلى هذه التقنيات من نقطة الصفر ونلقي الضوء على تأثير خيارات التصميم المختلفة على طول الطريق. سوف تكتسب فهمًا عميقًا لكلا المنتجين ، وفهمًا للطريقة التي ينبغي استخدامها وعدم استخدامها ، وفهمًا لما يجب البحث عنه عند التفكير في تقنيات المراسلة الأخرى في المستقبل.
قبل البدء ، دعنا نذهب من خلال الأساسيات.
ما هو نظام الرسائل ولماذا هو مطلوب
لكي يتواصل تطبيقان مع بعضهما البعض ، يجب عليهما أولاً تحديد واجهة. يتضمن تعريف هذه الواجهة تحديد النقل أو البروتوكول ، مثل HTTP أو MQTT أو SMTP والتفاوض على تنسيقات الرسائل التي ستتبادلها الأنظمة. قد تكون عملية صارمة ، مثل تحديد مخطط XML بمتطلبات الحمولة النافعة للرسالة ، أو قد تكون أقل رسمية ، على سبيل المثال ، اتفاق بين مطورين اثنين على أن جزءًا من طلب HTTP سيحتوي على معرف عميل .
طالما أن تنسيق الرسائل وترتيب الإرسال بين الأنظمة ثابتان ، فسيكونان قادرين على التفاعل مع بعضهما البعض دون القلق بشأن تنفيذ نظام آخر. قد تتغير الأجزاء الداخلية لهذه الأنظمة ، مثل لغة البرمجة أو الإطار المستخدم ، بمرور الوقت. طالما تم دعم العقد نفسه ، يمكن أن يستمر التفاعل دون تغيير من الجانب الآخر. يتم فصل النظامين بشكل فعال (مفصولين) عن طريق هذه الواجهة.
تنص أنظمة المراسلة ، كقاعدة عامة ، على مشاركة وسيط بين نظامين يتفاعلان من أجل مزيد من فك الارتباط (فصل) المرسل عن المستلم أو المستلم. في الوقت نفسه ، يسمح نظام المراسلة للمرسل بإرسال رسالة دون معرفة مكان وجود المستلم ، سواء كان نشطًا أو عددهم.
دعونا نلقي نظرة على اثنين من أوجه التشابه بين أنواع المشاكل التي يحلها نظام المراسلة ، ونقدم بعض المصطلحات الأساسية.
نقطة إلى نقطة
ألكسندرا يذهب إلى مكتب البريد لإرسال آدم لا يتجزأ. تمشي إلى النافذة وتسلم الموظف حزمة. يلتقط الموظف الطرد ويعطي الكسندرا إيصالًا. آدم لا يحتاج إلى أن يكون في المنزل في وقت إرسال الطرود. ألكسندرا واثقة من أن الحزمة سيتم تسليمها إلى آدم في مرحلة ما في المستقبل ، ويمكن أن تستمر في فعل شيء خاص بها. في وقت لاحق ، في مرحلة ما ، يتلقى آدم الحزمة.
هذا مثال على نموذج المراسلة من
نقطة إلى نقطة . يعمل مكتب البريد هنا كآلية لتوزيع الطرود ، مما يضمن تسليم كل طرد مرة واحدة. يفصل استخدام مكتب البريد فعل إرسال الطرود عن تسليم الطرود.
في أنظمة المراسلة الكلاسيكية ، يتم تطبيق نموذج الإشارة إلى نقطة من خلال
قوائم الانتظار . قائمة الانتظار بمثابة المخزن المؤقت FIFO (أولاً في ، أولاً الخروج) التي يمكن للمستهلك أو أكثر من الاشتراك. يتم تسليم كل رسالة إلى
واحد فقط
من المستهلكين المشتركين . تحاول قوائم الانتظار عادةً توزيع الرسائل بين المستهلكين إلى حد ما. سيتلقى مستهلك واحد فقط هذه الرسالة.
يتم تطبيق المصطلح "دائم" على قوائم الانتظار.
الموثوقية هي إحدى ميزات الخدمة التي تضمن قيام نظام المراسلة بحفظ الرسائل عندما لا يكون هناك مشتركون نشطون حتى يشترك المستهلك في قائمة الانتظار لتسليم الرسائل.
غالبًا ما يتم الخلط بين الموثوقية
والمثابرة ، وعلى الرغم من استخدام المصطلحين بالتبادل ، إلا أنهما يؤديان وظائف مختلفة. يحدد الثبات ما إذا كان يتم تبادل الرسالة بواسطة نظام المراسلة في أي نوع من التخزين بين استلامها وإرسالها إلى المستهلك. قد تكون أو لا تكون الرسائل المرسلة إلى قائمة الانتظار ثابتة.
يتم استخدام المراسلة من نقطة إلى نقطة عندما تتطلب حالة الاستخدام إجراء لمرة واحدة مع رسالة. مثال على ذلك إيداع الأموال في حساب أو إكمال أمر التسليم. سنناقش لاحقًا سبب عدم قدرة نظام المراسلة نفسه على توفير التسليم لمرة واحدة ولماذا يمكن أن توفر قوائم الانتظار في أفضل الأحوال ضمانًا للتسليم
مرة واحدة على الأقل .
الناشر المشترك
غابرييلا يطلب رقم المؤتمر. أثناء اتصالها بالمؤتمر ، تسمع كل شيء يقوله المتحدث ، إلى جانب المشاركين الآخرين في المكالمة. عندما تنطفئ ، تتخطى ما يقال. عند إعادة الاتصال ، تستمر في سماع ما يقولون.
هذا مثال على نموذج مراسلة
للنشر والاشتراك . مؤتمرات بمثابة آلية البث. لا يتحدث الشخص الذي يتحدث عن عدد الأشخاص الذين ينضمون إلى المكالمة حاليًا - حيث يضمن النظام أن أي شخص متصل في الوقت الحالي يسمع ما يقال.
في أنظمة المراسلة الكلاسيكية ، يتم تطبيق نموذج المراسلة للنشر والاشتراك من خلال
الموضوعات . يوفر الموضوع نفس طريقة البث مثل آلية المؤتمرات. عند إرسال رسالة إلى الموضوع ، يتم توزيعها
على جميع المستخدمين المشتركين .
الموضوعات عادة
لا يمكن الاعتماد عليها (غير قابلة للاستمرار) . مثل المستمع الذي لا يسمع ما يقال في المكالمة الجماعية ، عند قطع المستمع ، يتخطى المشتركون في الموضوع أية رسائل يتم إرسالها عندما يكونون غير متصلين. لهذا السبب ، يمكن القول أن الموضوعات توفر ضمانًا للتسليم
لا يزيد عن مرة واحدة لكل مستهلك.
عادةً ما يتم استخدام رسائل الاشتراك في النشر عندما تكون الرسائل بطبيعتها معلوماتية ، وفقدان رسالة واحدة ليس ذا أهمية خاصة. على سبيل المثال ، يمكن للموضوع نقل قراءات درجة الحرارة من مجموعة من أجهزة الاستشعار مرة واحدة في الثانية. النظام الذي يهتم بدرجة الحرارة الحالية والذي يشترك في الموضوع لن يقلق إذا فاتته رسالة - سيصل نظام آخر في المستقبل القريب.
نماذج الهجين
يضع موقع المتجر الإلكتروني رسائل الطلب في قائمة انتظار الرسائل. المستهلك الرئيسي لهذه الرسائل هو النظام التنفيذي. بالإضافة إلى ذلك ، يجب أن يحتوي نظام التدقيق على نسخ من رسائل الطلب هذه للتتبع اللاحق. لا يمكن للنظامين تخطي الرسائل ، حتى إذا كانت الأنظمة نفسها غير متوفرة لبعض الوقت. يجب ألا يكون موقع الويب على دراية بالأنظمة الأخرى.
غالبًا ما تتطلب سيناريوهات الاستخدام مزيجًا من نماذج الاشتراك والرسائل من نقطة إلى نقطة ، على سبيل المثال ، عندما تتطلب أنظمة متعددة نسخة من الرسالة ، وكل من الوثوقية والثبات ضروريان لمنع فقد الرسالة.
في هذه الحالات ، تكون الوجهة مطلوبة (مصطلح عام لقوائم الانتظار والمواضيع) ، الذي يوزع الرسائل بشكل رئيسي كموضوع ، بحيث يتم إرسال كل رسالة إلى نظام منفصل يهتم بهذه الرسائل ، ولكن أيضًا يمكن لكل نظام تحديد عدة المستهلكين الذين يتلقون رسائل واردة ، والتي هي أشبه قائمة الانتظار. نوع القراءة في هذه الحالة هو
مرة واحدة لكل طرف مهتم . غالبًا ما يحتاج هؤلاء المستلمون المختلطون إلى متانة ، لذلك إذا تم قطع اتصال العميل ، يتم استلام الرسائل التي يتم إرسالها في هذا الوقت بعد إعادة الاتصال بالمستهلك.
النماذج المختلطة ليست جديدة ويمكن استخدامها في معظم أنظمة المراسلة ، بما في ذلك ActiveMQ (عبر وجهات افتراضية أو مركبة تجمع بين الموضوعات وقوائم الانتظار) ، و Kafka (ضمنيًا ، كخاصية أساسية لتصميم المرسل إليه).
الآن وقد أصبح لدينا بعض المصطلحات الأساسية وفهمًا لما قد يكون نظام الرسائل مفيدًا له ، دعنا ننتقل إلى التفاصيل.
اكتملت الترجمة: tele.gg/middle_javaالجزء التالي:
الفصل 2. ActiveMQأن تستمر ...