جافا متقدمة مقابلة واحدة من سلسلة: بنية النظام الخاص بك لماذا إدخال مراسلة الوسيطة

بدأت هذه المادة، ونحن مراسلة قطعة الوسيطة من الأسئلة وجهه عالية التردد للجميع للحديث عن، ويغطي MQ الوسيطة أيضا بعض المشاكل التقنية المشتركة.

إذا نظرتم الى استئناف المقابلة كتابة تجربة MQ الوسيطة، فمن المرجح أن يكون على الأسئلة التالية:

  • بيئة الإنتاج مع الوسيطة الرسائل الخاصة بالشركة ما هو؟
  • لماذا يجب إدخال مراسلة الوسيطة في النظام؟
  • ما مزايا وعيوب بعد إدخال مراسلة الوسيطة؟

حسنا، لدينا لتحليل واحدا تلو الآخر!

A. وبيئة الإنتاج مع الوسيطة الرسائل الخاصة بالشركة ما هو؟

أول شيء يجب أن نقول في الوسيطة الرسائل ما يتم تحديد شركتك، مثل استخدام RabbitMQ، فإنك يمكن أن تعطي تحليلا أوليا لبعض مختلفة التكنولوجيا الوسيطة اختيار MQ.

على سبيل المثال: على سبيل المثال، ActiveMQ مراسلة الوسيطة هو المخضرم العديد من الشركات المحلية استخدام الماضي لا يزال واسع جدا، وقوية جدا.

ولكن المشكلة هي أن الإنترنت لا يمكن تأكيد ActiveMQ يمكن أن تدعم التزامن عالية للشركة، تحميل عالية وإنتاجية عالية من المشاهد المعقدة في شركات الإنترنت المحلية تنخفض أقل. واستخدام المزيد من الشركات التقليدية، والمكالمات غير متزامن وفصل مع ActiveMQ.

ثم هل يمكن أن نتحدث عن RabbitMQ، صالحه هو أنه يمكن أن تدعم التزامن العالية الإنتاجية العالية والأداء الرفيع، ولها واجهة المشرف ممتازة ومريحة يمكن استخدامها.

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

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

وبالإضافة إلى ذلك، RabbitMQ مجتمع المصادر المفتوحة نشطة جدا، وتواتر النسخة التكرارية العالي، لعلة وجدت، فضلا عن مجموعة متنوعة من التحسين، وبعد دراسة شاملة لذلك، اتخذت الشركة RabbitMQ.

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

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

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

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

ولكن ميزة هي أن كافكا المصممة للإنتاجية عالية، وجمع سجل في الوقت الحقيقي، والتزامن البيانات في الوقت الحقيقي، والبيانات في الوقت الحقيقي لتصميم سيناريوهات حساب.

حتى كافكا مع المزيد من التكنولوجيا في الوقت الحقيقي الحوسبة (مثل سبارك الجري، العاصفة، Flink) المستخدمة في مجال البيانات الكبيرة. ولكن أقل المستخدمة في سيناريوهات الاستخدام MQ الوسيطة التقليدية.

PS: إذا كان لديك ليس في أجهزة الكمبيوتر الخاصة بهم المنتشرة على بعض ما سبق تكنولوجيا MQ، لم يكتب تجربة helloworld قليلة، أقترح أولا على الموقع الرسمي للتقنيات المختلفة وجدت helloworld تجريبي، تشغيل اللعب الخاصة بهم مرة أخرى

II. لماذا في بنية النظام الخاص بك لتقديم مراسلة الوسيطة؟

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

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

1) فك الارتباط

افترض أن لديك نظام A، إخراج نظام إرادة الأساسية البيانات A، B، والآن نظام المصب من نظام C البيانات المطلوبة.

بهذه البساطة، A هو واجهة استدعاء نظام المباشرة لإرسال أنظمة البيانات B و C من النظام لمنحهم ما يرام.

العملية برمتها، كما هو مبين في الشكل.

ولكن الآن إذا كان النظام هو D، E نظام، نظام F، G النظام، وما إلى ذلك، وعشرات غيرها من النظم تحتاج هذه البيانات الأساسية ببطء؟ كما هو مبين في الشكل.

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

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

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

أولا، للعثور على الشخص الذي طلب منه إرسال البيانات إلى H النظام الجديد، A زميل للنظام لتعديل التعليمات البرمجية في رمز وثم استدعاء النظام الجديد بإضافة عملية H.

B للنظام الذي العتيقة النظام القديم لتكون من خط التجميع، والطلاب نقول للنظام A: لا ترسل البيانات لي، ثم مرة أخرى لتعديل نظام الرمز A إلى B. نظام لم يعد

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

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

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

وهكذا في بنية النظام أعلاه، فصل ويمكن تحقيق ذلك باستخدام MQ الوسيطة.

وضع نظام حصتها من البيانات الأساسية إرسالها إلى MQ، والاهتمام الذي النظام الخاص المصب للاستهلاك، لا تحتاج إلى المستهلك لإلغاء البيانات، كما هو موضح أدناه.

افترض أن لديك مكالمة نظام الارتباط، استدعاء نظام نظام B، وعادة ما يستغرق 20ms، نظام B C استدعاء النظام، وعادة ما يستغرق 200MS، نظام D C استدعاء النظام، وعادة ما يستغرق 2S، كما هو مبين أدناه.

والمشكلة الأكبر هي: طلب المستخدم على مدى ضخمة بطيئة جدا، لأن اكتمال وصلة، فإنه يأخذ 20ms + 200MS + 2000ms (2S) = 2220ms، أي أكثر من 2 ثانية من الوقت.

في الواقع، ومع ذلك، فإن النظام يستدعي ربط نظام A B، ونظام يدعو النظام B C، خطوتين 220ms معا أيضا.

لأن إدخال هذه الخطوة نظام C يدعو نظام D، مما أدى في نهاية المطاف في وقت التنفيذ متعدد الوصلات هو 2 ثانية، ويدعو مباشرة إلى الرابط 10 مرات أقل الأداء، والذي يؤدي إلى الارتباط يتم تنفيذ الجاني بطيئة جدا.

في هذه المرحلة يمكننا أن نفكر في ذلك، لا يمكن للنظام أن فصل من سلسلة D وجعل من استدعاء غير متزامن ذلك؟ في الواقع، العديد من سيناريوهات الأعمال التي قد تسمح المكالمات غير متزامن.

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

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

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

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

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

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

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

لذلك على الرابط أعلاه هو نفس المنوال، إذا كانت العمليات التجارية للدعم الفني متزامنة، ثم، لا ينبغي اعتبار الدعوة إلى نظام D نظام C يتم سحبها من غير متزامن الارتباط بها، متزامن ليس بناء على أمر استدعاء.

وهكذا، والفكرة هي لتنفيذ نظام A - >  نظام B - >  نظام C، مباشرة بعد تناول نجاح 220ms المباشر.

ثم، بعد نظام C هو ارسال رسالة الى الوسيطة MQ، واستهلاك من قبل النظام رسالة غير متزامن ببطء إلى D لأداء العمليات التجارية تستغرق وقتا طويلا من 2S. وبهذه الطريقة أداء الأساسية سوف تؤدي المباشر تحسين الارتباط عشرة أضعاف.

العملية برمتها، كما هو مبين في الشكل.

3) لقطة تدفق

افترض أن لديك نظام، وعادة ما الوقت الاصلي ربما مئات الطلبات، يتم نشر النظام في الجهاز 16G ثمانية النواة، معالجة العادي على ما يرام في الثانية الواحدة، ومئات من الطلبات في الثانية التي يمكن أن تكون بسهولة صمدت ل.

ومع ذلك، كما هو موضح في الشكل التالي، كل من جاء فجأة في ذروة عدة آلاف من الطلبات في الثانية، كان هناك تدفق الذروة لحظية، ثم اختيارك هو الانخراط في 10 الآلات، ولحظية ذروة صمدت آلاف الطلبات في الثانية الواحدة ذلك؟

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

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

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

عند هذه النقطة يمكننا استخدام MQ الوسيطة لقطة حركة المرور. جميع الآلات المنتشرة أمام طبقة من MQ، عادة عدة مئات في طلب يتمكنوا من تلقي الرسائل بسهولة.

مرة واحدة في ذروة حظية، عن تدفق آلاف الطلبات في الثانية، والتي يمكن تراكمت في MQ، ثم أن آلة معالجة ببطء والاستهلاك.

الخ وبعد فترة الذروة، ثم للمستهلك لبعض الوقت، MQ تراكم البيانات على المستهلك الانتهاء.

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

الملاحظات العمارة Huperzine (معرف: shishan100)

الكاتب: الصينية شي شان، BAT عاما من الخبرة في محفظة العمارة

العنوان الأصلي: الشبكي: //www.imooc.com/article/283844

راتب مبرمج 35K، وشحذ مصنعي التكنولوجيا تريد أن تذهب، ولكن تجد ذلك أيضا تينسنت إلى الأقل الأجر!

عقدت لوهو ثمانية وثلاثين العاملات دفع متعة التحدي خطة 1000 انكانغ حماية المتبادلة

سؤال: لماذا لا تبديل مبرمج ولكن الكثير من إذا وآخر؟

2008 أذكر تلك الأيام بينما يحتسي الشمبانيا في حين تتمتع منظر ليلي ديسكو بكين

ايطاليا لديها مستوى منخفض جدا ميناء الولايات المتحدة من تريست

لماذا ثقافة اسرة سونغ الصينية "جعل العالم للغاية"؟

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

بوفون زميله السابق كان 60 سنة! وقد حصل على كأس العالم والدفاع عن لقب دوري ابطال اوروبا

فترة جافا المبرمجين من أمر مجموعة من التعليمات البرمجية، ولكن أنا لا أعرف ما هي المشكلة: طلب المساعدة لنا أن نرى

استغل منصبه، وقال انه خلسة سرقة مائة مليون يوان لوحات: أمينة ب "اللص يا" في الخريف

الموسم مدرسة تذكر بعيدا لي والدي لإرسال سلسلة صغيرة للذهاب إلى الكلية لتقرير، لأول مرة بعيدا عن المنزل ......

دعونا الرقمية في كهوف موقاو "الحياة الأبدية"، لديها 30 الكهوف لاول مرة الكلاسيكية الإنترنت