بنية وتنفيذ خدمات Microservices خطوة بخطوة الجزء 1

مرحبًا ،

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

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

على سبيل المثال ، يحتوي مشروع eShop هذا من Microsoft على كل ما نحتاج إليه ، ولكن ليس من السهل للغاية معرفة ما يجري هناك ، سلاسل اتصال قاعدة بيانات SQL ، فشل البرامج النصية Docker ، لا How-Tos وأنا لست متأكدًا من أنه رائع بنية بسيطة تحتاج إلى البدء بها.

صورة

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

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

سوف تغطي المواضيع التالية ومحاولة الحفاظ عليها بسيطة:

  1. متطلبات ما قبل وإعداد البيئة
  2. اختيار اسم لمشروع + أهداف نريد تحقيقها
  3. العمارة الشاملة
  4. بدء التنفيذ (.NET Core)
  5. إعداد قاعدة البيانات وذاكرة التخزين المؤقت والاختبار
  6. تكوين الأدوات والأدوات
  7. تحديد سيناريو حالة الاستخدام الأساسي الفائق + تنفيذه
  8. نشر في مكان ما

سيستخدم .NET Core 2.1 ، VS2017 على نظام التشغيل Windows 10. يجب تثبيت الأطراف الثالثة التالية وتشغيلها على جهازك: Redis for Windows ، MongoDB ، Seq ، RabbitMQ . سيتم تشغيل جميع الأشياء مع المعلمات الافتراضية. لقد وجدت هذه الأدوات سريعة وسهلة التركيب وتعمل فورًا.

عميل سطح المكتب لـ Redis ( https://redisdesktop.com/ ):

صورة

عميل سطح المكتب لـ MongoDB ( https://nosqlbooster.com/ ):

صورة

2. الهدف من المشروع هو إنشاء خلفية للحصول على البيانات من آلاف الأجهزة المحمولة / القابلة للارتداء. نوع البيانات هو بيانات المستشعر: حركة ذات 9 محاور ، تحديد الموقع الجغرافي ، درجة الحرارة ، الرطوبة ، إلخ. سوف ترغب أيضًا في معالجة وتحليل جميع تلك البيانات لإظهارها على بعض واجهة المستخدم الجميلة المستندة إلى الويب كإحصائيات ورسوم بيانية وتتبع ، إلخ. تم اختيار اسم المشروع بينما كنت أكتب هذه الفقرة - "Sensor Fusion Backend". أول خدمتين صغيرتين يمكنني التفكير فيهما هما DataProcessorService و DataAnalyticsService.

3. لنبدأ في التفكير في الهندسة المعمارية والبنية التحتية الدنيا على الأقل بالنسبة للمبتدئين. الاتصال: يتعامل مشروعنا مع نوع IoT / sensors من البيانات لذلك ، مع وضع هذا الشيء في الاعتبار أود استخدام وسيط الرسائل RabbitMQ للاتصال بخادم العميل. هنا تفسيرات قصيرة وبسيطة . قاعدة البيانات: سوف تستخدم مزيج MongoDB + Redis . MongoDB كنظام تخزين رئيسي و Redis كذاكرة تخزين مؤقت. تسجيل الدخول: مكتبة سجل Serilog + Seq كأداة متخيل.

Seq هو تطبيق ويب مستضاف على البنية الأساسية الخاصة بك:

صورة

لتبسيط واجهة برمجة التطبيقات ، سأستخدم Swagger:

صورة

لذلك ، الجزء الأول يدور حول الأدوات التي سنستخدمها لبدء التنفيذ. سترى الكود في الجزء 2 ويبدأ اللعب بالبنية التحتية.

Source: https://habr.com/ru/post/ar458400/


All Articles