لم يتم أخذ توفر التطبيقات على محمل الجد كما هو الحال اليوم عندما نستخدم التطبيقات لأكثر من مجرد اتصال ، سواء أكان شخصيًا أم مهنيًا وعندما تكون التطبيقات هي العمل.
تفقد التطبيقات غير المتصلة بالإنترنت باستمرار ، أو غير المستقرة ، مستخدميها ومدى ملاءمتها ، وتصبح في نهاية المطاف قديمة. حدث ذلك في ومضة. نظرًا لأن الإنترنت لا ينام أبدًا ويعمل 24 ساعة في اليوم ، 7 أيام في الأسبوع ، يجب أن تنطبق نفس الفكرة على التطبيقات.
تعد قابلية التوسع أمرًا بالغ الأهمية للقيام بذلك ولضمان توفر التطبيق. موازنة الحمل هي أحد أهم المكونات في ضمان التوافر. لا يزال الكثير من الناس يعتقدون أن موازنة الحمل يمكن تحقيقها باستخدام برنامج نصي بسيط.
ولكن هذا ليس هو الحال. يوفر وحده الوصول إلى البرامج في جميع أنحاء العالم - في أي وقت ومن أي جهاز.
في هذا المنشور ، سنلقي نظرة عميقة على موازنة التحميل ، وخوارزمياتها ، ومدى ارتباطها بالخدمات المصغرة ، من بين أشياء أخرى. هيا نبدأ!
ما هي موازنة الحمل؟
مع تزايد الطلب على موقع الويب أو تطبيق الأعمال ، لن يتمكن خادم واحد قريبًا من التعامل مع الحمل بالكامل. تقوم المنظمات بتوزيع عبء العمل على العديد من الخوادم من أجل تلبية الطلب. هذه الطريقة ، المعروفة باسم "موازنة التحميل" ، تحافظ على خادم واحد من التحميل الزائد ، مما قد يتسبب في إبطائه أو إسقاط الطلبات أو حتى تعطله.
يوزع موازنة التحميل حركة مرور الشبكة بالتساوي لتجنب الفشل بسبب الحمل الزائد على الموارد. تعمل التطبيقات ، ومواقع الويب ، وقواعد البيانات ، وموارد الكمبيوتر الأخرى بشكل أفضل وأكثر توفرًا باستخدام هذه الطريقة. كما أنه يساعد في المعالجة المناسبة وفي الوقت المناسب لطلبات المستخدمين.
من وجهة نظر المستخدم ، تعمل موازنة التحميل كوسيط غير مرئي بين العميل ومجموعة من الخوادم ، مما يضمن عدم إسقاط طلبات الاتصال. من المرجح أن تنهار التطبيقات والمواقع وقواعد البيانات والخدمات عبر الإنترنت إذا أصبح الطلب كبيرًا جدًا دون موازنة التحميل.
يمكن إرسال مئات الآلاف من طلبات المستخدمين إلى موقع ويب واحد عالي الحركة في نفس الوقت. يلزم وجود خوادم متعددة لملء صفحات الويب بشكل صحيح بالمحتوى المطلوب ، مثل النص والصور والفيديو وتدفق الصوت. يتم استخدام موازنة التحميل بشكل شائع في مزارع خوادم مواقع الويب عالية الحركة ، بالإضافة إلى خوادم DNS وقواعد البيانات ومواقع بروتوكول نقل الملفات (FTP).
إذا كان خادم واحد مثقلًا بالأعباء ، فقد يعمل هذا بشكل سيئ أو حتى يتعطل. تقلل موازنات التحميل من فرصة التوقف عن العمل من خلال توزيع طلبات المستخدم بالتساوي بين مجموعة من الخوادم. إذا فشل أحد الخوادم في المجموعة ، فسيتم إعادة توجيه حركة المرور إلى خوادم أخرى في المجموعة. يضيف موازن التحميل خوادم جديدة تلقائيًا في عملية توزيع حركة المرور عند إضافتها إلى مستودع التخزين.
كيف يعمل موازنة الحمل؟
يعمل على النحو التالي:
- عندما يتلقى العميل طلبًا ، على سبيل المثال عبر متصفح أو تطبيق ، فإنه يحاول الاتصال بالخادم.
- عندما يتلقى موازن التحميل طلبًا ، فإنه يوجهه إلى أحد الخوادم في مجموعة الخوادم بناءً على الأنماط المحددة بواسطة الخوارزمية (أو المزرعة).
- يتلقى الخادم طلب الاتصال ويجيب على العميل من خلال موازن التحميل.
- عندما يتلقى موازن التحميل الاستجابة ، فإنه يطابق عنوان IP للعميل مع عنوان IP للخادم المحدد. بعد ذلك ، يتم إرسال الإجابة مع الحزمة.
- إلغاء تحميل SSL هو عملية فك تشفير البيانات باستخدام بروتوكول تشفير Security Socket Layer بحيث لا تضطر الخوادم إلى ذلك.
- تتكرر العملية حتى تنتهي الجلسة.
طرق موازنة الحمل
لتحديد أي من الخوادم في مزرعة الخوادم يتلقى الطلب التالي ، تستخدم كل تقنية موازنة تحميل مجموعة من المعايير. هناك خمسة طرق نموذجية لموازنة الحمل:
- جولة روبن: هذا هو الأسلوب الافتراضي ، ويعمل كما يبدو. يوزع موازن التحميل الطلبات بنمط دوار ، بدءًا من الخادم الأول في المجموعة والمضي قدمًا إلى الأسفل ، حيث ينتظر أن يتم استدعاؤه مرة أخرى. تضمن هذه الطريقة أن كل خادم يتعامل تقريبًا مع نفس عدد الاتصالات.
- جولة مرجحة روبن: يحدد هذا الأسلوب لكل خادم وزنًا (أو تفضيلًا) يتناسب عمومًا مع سعته. كلما زاد عدد الطلبات التي يتلقاها الخادم ، زاد الوزن. على سبيل المثال ، يتلقى خادم بقيمة وزن اثنين ضعف عدد الطلبات التي يستقبلها الخادم بقيمة وزن واحد.
- جلسة مثبتة: هذا النهج ، المعروف أيضًا باسم استمرارية الجلسة ، يربط عملاء وخوادم معينة طوال مدة الجلسة. لإنشاء الارتباط ، يستخدم موازن التحميل ملف تعريف ارتباط أو عنوان IP الخاص بالمستخدم لتحديد سمة المستخدم. بمجرد إنشاء الاتصال ، يتم توجيه طلبات المستخدم إلى نفس الخادم حتى تنتهي الجلسة. يعمل هذا على تحسين موارد الشبكة مع تحسين تجربة المستخدم أيضًا.
- أقل الاتصالات: تفترض هذه الإستراتيجية أن جميع الطلبات ينتج عنها عبء متساوٍ على الخادم. نتيجة لذلك ، يتلقى الخادم الذي لديه أقل عدد من الطلبات الطلب التالي.
- تجزئة IP: تُنشئ هذه الخوارزمية مفتاح تجزئة فريدًا استنادًا إلى عناوين IP الخاصة بالعميل والخادم والوجهة. يتم استخدام المفتاح لتوجيه الطلب ويسمح باستئناف الاتصال المفقود مع نفس الخادم.
الأجهزة مقابل. موازن تحميل البرامج
موازن تحميل الأجهزة
تشكل الأجهزة المادية ، مثل الجهاز ، موازنات تحميل الأجهزة. تقوم هذه المسارات بتوجيه حركة المرور إلى الخوادم بناءً على عوامل مثل عدد الاتصالات الحالية واستخدام المعالج وأداء الخادم. تحتوي موازنات تحميل الأجهزة على برامج ثابتة خاصة يجب صيانتها وتحديثها عند توفر إصدارات جديدة وإصلاحات أمان.
غالبًا ما توفر موازنات تحميل الأجهزة أداءً وتحكمًا أعلى ، فضلاً عن نطاق أوسع من الإمكانات مثل مصادقة Kerberos وتسريع أجهزة SSL ، ولكنها تتطلب مستوى معينًا من الخبرة في الإدارة والصيانة. نظرًا لأن موازنات تحميل الأجهزة أقل مرونة وقابلية للتوسع من موازنات تحميل البرامج ، فهناك ميل للإفراط في توفير موازنات تحميل الأجهزة.
موازن تحميل البرامج
عادةً ما تكون موازنات تحميل البرامج أسهل في الإعداد من نظيراتها في الأجهزة. كما أنها أكثر فعالية من حيث التكلفة وقابلية للتكيف ، وتعمل بشكل جيد مع بيئات تطوير البرامج. تتيح لك طريقة البرنامج تخصيص موازن التحميل وفقًا لمتطلبات بيئتك الدقيقة. قد تأتي المرونة المتزايدة على حساب الوقت الإضافي الذي يقضيه في إعداد موازن التحميل.
توفر لك موازنات البرامج قدرًا أكبر من المرونة لإجراء التعديلات والتحديثات مقارنةً بالأجهزة التي تتميز بنهج الصندوق المغلق. يمكن استخدام الأجهزة الافتراضية المعبأة مسبقًا كموازن لتحميل البرامج (VMs). ستوفر لك الأجهزة الافتراضية بعض وقت الإعداد ، ولكن قد لا يتوفر لديهم جميع الوظائف المتاحة في الأجهزة المماثلة.
تنفيذ بسيط لموازنة الحمل
سنستخدم مكتبة Spring Cloud لـ بناء التطبيقات التي تتصل بالتطبيقات الأخرى بطريقة متوازنة. أثناء معالجة طلبات الخدمة عن بُعد ، يمكننا بسهولة إنشاء موازنة تحميل باستخدام أي تقنية نحبها. خذ بعين الاعتبار الكود التالي كمثال. سنبدأ بتطبيق خادم أساسي.
سيحتوي الخادم على نقطة نهاية HTTP واحدة فقط وسيتم تشغيله في عدة حالات. ثم سننشئ تطبيق عميل يستخدم Load Balancer لتوزيع الطلبات عبر العديد من مثيلات الخادم.
المخدم
نبدأ مع الأساسي التمهيد الربيع تطبيق لخادم المثال الخاص بنا:
للبدء ، نقوم بحقن متغير قابل للتخصيص يسمى معرف المثيل. هذا يساعدنا على التمييز بين العديد من الحالات التي تعمل. بعد ذلك ، نقوم بإنشاء نقطة نهاية HTTP GET واحدة تقوم بإرجاع رسالة ومعرف المثيل.
سيعمل المثيل الافتراضي بالمعرف 1 على المنفذ 8080. نحتاج فقط إلى إضافة بعض معلمات البرنامج لبدء مثيل ثانٍ:
العميل
دعنا الآن نلقي نظرة على رمز العميل. هذا هو المكان الذي يأتي فيه Load Balancer ، لذا فلنبدأ بدمجه في تطبيقنا:
بعد ذلك ، نقوم بتطوير تطبيق ServiceInstanceListSupplier. هذه واحدة من أهم الواجهات في Load Balancer. وهي تحدد كيفية تحديد مواقع الخدمة التي يمكن الوصول إليها.
سنقوم بترميز مثيلين منفصلين من خادم المثال الخاص بنا في نموذج التطبيق الخاص بنا. تعمل على نفس النظام ولكنها تستخدم منافذ منفصلة:
قم بإنشاء فئة LoadBalancerConfiguration الآن:
هذه الفئة لها غرض واحد فقط: فهي تنشئ منشئ WebClient متوازن التحميل لإجراء الطلبات عن بعد. يستخدم التعليق التوضيحي اسمًا وهميًا للخدمة.
هذا يرجع إلى حقيقة أننا على الأرجح لن نعرف أسماء المضيف والمنافذ الدقيقة لتشغيل المثيلات في وقت مبكر. نتيجة لذلك ، نستخدم اسمًا وهميًا كعنصر نائب ، وسيحل إطار العمل محل المعلومات الفعلية عندما يختار مثيلاً قيد التشغيل.
بعد ذلك ، دعنا نصنع فئة التكوين التي سيتم استخدامها لإنشاء مثيل لتزويد مثيل الخدمة الخاص بنا. لاحظ أننا نستخدم نفس الاسم المستعار كما في السابق:
يمكننا الآن بناء تطبيق العميل الحقيقي. دعنا نرسل 10 استعلامات إلى نموذج الخادم باستخدام وحدة WebClient السابقة:
يمكننا أن نرى من المخرجات أننا نقوم بموازنة التحميل بين حالتين منفصلتين:
موازنة الحمل في الخدمات المصغرة
يتم استخدام بنية Microservice من قبل العديد من الشركات ، مثل Netflix و Amazon ، لتطوير تطبيقات الأعمال كمجموعة من الخدمات غير المترابطة. يعد التسليم المفرط والمستمر للتطبيقات المعقدة سببين فقط للانتقال إلى هذه البنية الموزعة وغير المتصلة بشكل غير محكم.
طبقت فرق هذه المؤسسات إستراتيجيات Agile و DevOps من أجل إنتاج التطبيقات بشكل أسرع وبمعدل فشل أقل من الطرق التقليدية. ومع ذلك ، يجب أن تحقق توازنًا بين تعقيد البنية الموزعة ومتطلبات التطبيق ومتطلبات النطاق وقيود الوقت في السوق.
لسنوات عديدة ، كانت وحدات التحكم في تسليم التطبيقات (ADCs) ضرورية لتلبية متطلبات مستوى الخدمة لتطبيقات الشركة المستضافة في مكان العمل أو في السحابة. لا يحتاج العميل الذي يتعامل مع تطبيق قائم على الخدمات المصغرة إلى معرفة المثيلات التي توفره من أجل تنمية العميل والخدمات المصغرة بشكل مستقل.
هذا هو بالضبط الفصل الذي يوفره وكيل عكسي أو موازن تحميل. مرة أخرى ، موازنة الحمل هي الحل لضمان أن الخدمات المصغرة يمكنها التعامل مع الطلب والأمان والتوافر.
عندما تجمع بين موازنة الحمل التقليدية بين الشمال والجنوب بين التطبيقات القائمة على العميل والخدمات المصغرة مع النشر بين الشرق والغرب لقابلية التوسع الأفقي ، فإنك تحصل على دفعة كبيرة. الهدف هو الحفاظ على البيئة الآمنة والمنظمة التي تتطلبها تكنولوجيا المعلومات دون التضحية برشاقة التطوير أو أتمتة DevOps المتطلبات.
المميزات
توفر موازنة التحميل مزايا متنوعة من خلال تحسين استخدام الموارد وتسليم البيانات ووقت الاستجابة لمواقع الويب والتطبيقات عالية الحركة ، بالإضافة إلى قواعد البيانات التي تتلقى عددًا كبيرًا من الاستعلامات. تضمن موازنة التحميل تلبية طلبات المستخدم بسرعة وبشكل صحيح في سيناريوهات حركة المرور العالية.
أنها توفر للمستخدمين تفاقم التعامل مع البرامج والموارد البطيئة. تساعد موازنة الأحمال أيضًا في تجنب فترات التعطل وتبسيط الأمان ، مما يقلل من مخاطر فقدان الإنتاجية والأرباح لشركتك.
- توفر موازنة التحميل المرونة في إضافة الخوادم وإزالتها حسب الطلب ، بالإضافة إلى إدارة حركة المرور لتحقيق الكفاءة المثلى. نظرًا لتحويل حركة المرور إلى خوادم أخرى أثناء الصيانة ، فمن الممكن أيضًا إجراء صيانة الخادم دون مقاطعة المستخدمين.
- توفر موازنة التحميل وفرة مضمنة عن طريق تقسيم حركة المرور بين مجموعة من الخوادم. يمكنك تحويل الحمل على الفور إلى خوادم أخرى في حالة فشل أحدها ، مما يقلل من التأثير على المستخدمين.
- إذا زاد استخدام تطبيق أو موقع ويب ، فقد تؤدي زيادة حركة المرور إلى تدهور أدائها إذا لم يتم التعامل معها بشكل فعال. باستخدام موازنة التحميل ، يمكنك إضافة خادم حقيقي أو افتراضي لتلبية الطلب دون تعطيل الخدمة. يحدد موازن التحميل الخوادم الجديدة فور وصولها عبر الإنترنت ويقوم بدمجها بسهولة في العملية. تُفضل هذه الطريقة لترحيل موقع ويب من خادم مثقل بالأعباء إلى خادم جديد ، والذي يتضمن في كثير من الأحيان بعض الوقت الضائع.
وفي الختام
موازنة الحمل هي عنصر حاسم في الأنظمة المعاصرة المتسامحة مع الأخطاء. يمكننا ببساطة إنشاء تطبيقات توزع الطلبات على مثيلات خدمة متعددة باستخدام أساليب مختلفة لموازنة التحميل. يجب أن تدعم الشركات أنظمة تكنولوجيا المعلومات المعقدة من أجل توفير التطبيقات بشكل آمن.
قد يكون تكوين الخدمات المصغرة عبر المجالات ونشرها وصيانتها عرضة للخطأ ومكلفة وتستغرق وقتًا طويلاً. يجب أن تستخدم تكنولوجيا المعلومات أفضل الممارسات والتقنيات الخاصة بالأتمتة والرؤية والتحليلات والتنسيق المتوافقة مع عمليات Agile و DevOps لتسهيل إعداد هذه الخدمات المصغرة وصيانتها.
اترك تعليق