بنية الخدمات المصغرة - تعلم ، قم ببناء ونشر الخدمات المصغرة

تشرح هذه المدونة بنية الخدمات المصغرة بالتفصيل. ويتضمن أيضًا إيجابيات وسلبيات ودراسة حالة تشرح بنية UBER.

بنية الخدمات المصغرة:

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

ستتعرف في هذه المدونة على ما يلي:





  • تعريف معمارية الخدمات المصغرة
  • المفاهيم الأساسية لبنية الخدمات المصغرة
  • إيجابيات وسلبيات بنية الخدمات المصغرة
  • أوبر - دراسة حالة

يمكنك الرجوع إلى ، لفهم أساسيات وفوائد الخدمات المصغرة.

سيكون من العدل فقط إذا أعطيتك تعريف الخدمات المصغرة.



تعريف الخدمات المصغرة

على هذا النحو ، لا يوجد تعريف مناسب لـ Microservices المعروف أيضًا باسم Microservice Architecture ، ولكن يمكنك القول إنه إطار عمل يتكون من خدمات صغيرة قابلة للنشر بشكل فردي تؤدي عمليات مختلفة.

تركز الخدمات المصغرة على مجال عمل واحد يمكن تنفيذه كخدمات مستقلة تمامًا قابلة للنشر وتنفيذها على مجموعات تقنية مختلفة.

الاختلافات بين الهندسة المعمارية المتجانسة والخدمات الدقيقة - بنية الخدمات المصغرة - Edureka



كيفية استخدام القوة في بيثون

شكل 1: الفرق بين الهندسة المعمارية المتجانسة والخدمات المصغرة - بنية الخدمات المصغرة

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

لجعلك تفهم بشكل أفضل ، دعني أخبرك ببعض المفاهيم الأساسية لبنية الخدمات المصغرة.

المفاهيم الأساسية لبنية الخدمات المصغرة

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

فيما يلي بعض الإرشادات التي يجب اتباعها أثناء مناقشة الخدمات المصغرة.

إرشادات أثناء تصميم الخدمات المصغرة

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

الآن ، بعد أن قرأت الإرشادات الأساسية أثناء تصميم الخدمات المصغرة ، دعنا نفهم بنية الخدمات المصغرة.

كيف تعمل بنية الخدمات المصغرة؟

يجب أن تتكون بنية الخدمات المصغرة النموذجية (MSA) من المكونات التالية:

  1. العملاء
  2. موفرو الهوية
  3. بوابة API
  4. تنسيقات المراسلة
  5. قواعد بيانات
  6. محتوى ثابت
  7. إدارة
  8. اكتشاف الخدمة

اشر الى الشكل في الاسفل.

الشكل 2: هندسة الخدمات المصغرة - هندسة الخدمات المصغرة

أعلم أن الهندسة تبدو معقدة بعض الشيء ، لكن دعناأناتبسيطها لك.

1. العملاء

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

2. موفرو الهوية

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

3. بوابة API

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

تشمل مزايا استخدام بوابة API ما يلي:

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

بعد تلقي طلبات العملاء ، تتكون البنية الداخلية من خدمات صغيرة تتواصل مع بعضها البعض من خلال الرسائل للتعامل مع طلبات العملاء.

4. تنسيقات المراسلة

هناك نوعان من الرسائل التي يتواصلون من خلالها:

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

السؤال التالي الذي قد يتبادر إلى ذهنك هو كيف تتعامل التطبيقات التي تستخدم الخدمات المصغرة مع بياناتها؟

5. معالجة البيانات

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

الشكل 3: تمثيل الخدمات الدقيقة لمعالجة البيانات - بنية الخدمات المصغرة

يتم ترحيل الخدمات التي تقدمها Microservices إلى أي خدمة عن بُعد تدعم الاتصال بين العمليات لحزم التكنولوجيا المختلفة.

6. محتوى ثابت

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

بصرف النظر عن المكونات المذكورة أعلاه ، هناك بعض المكونات الأخرى التي تظهر في بنية الخدمات المصغرة النموذجية:

7. الإدارة

هذا المكون مسؤول عن موازنة الخدمات على العقد وتحديد الأعطال.

8. اكتشاف الخدمة

يعمل كدليل للخدمات المصغرة للعثور على مسار الاتصال بينها لأنه يحتفظ بقائمة من الخدمات التي توجد عليها العقد.

اشترك في قناتنا على يوتيوب للحصول على تحديثات جديدة ..!

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

إيجابيات وسلبيات بنية الخدمات المصغرة

الرجوع إلى الجدول أدناه.

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

دعنا نفهم المزيد عن الخدمات المصغرة من خلال مقارنة هندسة UBER السابقة بالهيكل الحالي.

دراسة حالة أوبر

الهندسة المعمارية السابقة لأوبر

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

الشكل 4: الهندسة المعمارية المتجانسة لـ UBER - هندسة الخدمات المصغرة

الرسم البياني أعلاه يصور الهندسة المعمارية السابقة لـ UBER.

  • توجد واجهة برمجة تطبيقات REST التي يتصل بها الراكب والسائق.
  • يتم استخدام ثلاثة محولات مختلفة مع واجهة برمجة التطبيقات بداخلها ، لتنفيذ إجراءات مثل الفوترة والمدفوعات وإرسال رسائل البريد الإلكتروني / الرسائل التي نراها عندما نحجز سيارة أجرة.
  • قاعدة بيانات MySQL لتخزين جميع بياناتهم.

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

عرض المشكلة

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

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

المحلول

ترتيب تصاعدي c ++

لتجنب مثل هذه المشاكل ، قررت UBER تغيير بنيتها واتباع الشركات الأخرى ذات النمو الفائق مثل Amazon و Netflix و Twitter وغيرها الكثير. وهكذا ، قررت UBER تقسيم بنيتها المتجانسة إلى قواعد أكواد متعددة لتشكيل بنية الخدمات المصغرة.

ارجع إلى الرسم البياني أدناه لإلقاء نظرة على بنية الخدمات المصغرة في UBER.

الشكل 5: بنية الخدمات المصغرة لـ UBER - هندسة الخدمات المصغرة

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

في هذاالطريق، استفاد UBER من خلال التحويلانهاالعمارة من monolithic إلى Microservices.

أتمنى أن تكون قد استمتعت بقراءة هذا المنشور على Microservice Architecture.سأخرج بمزيد من المدونات ، والتي ستتضمن تدريبًا عمليًا أيضًا.
هل أنت مهتم بمعرفة المزيد عن الخدمات المصغرة؟

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

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في ' هندسة Microservice 'وسأعود إليك.