Microservices قواعد بيانات Nosql وقوائم انتظار الرسائل

نشرت: 2022-11-22

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

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

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

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

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

الائتمان: https://microsoft.com

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

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

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

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

قاعدة البيانات المشتركة للخدمات المصغرة

الائتمان: https://medium.com

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

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

الائتمان: https://cloudfront.net

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

أنماط قاعدة البيانات للخدمات المصغرة

الائتمان: https://medium.com

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

انضمام قاعدة بيانات الخدمات المصغرة

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

أنماط إدارة قاعدة بيانات الخدمات المصغرة

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

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

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

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

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

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

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

هندسة الخدمات المصغرة

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

الأنواع الثلاثة المختلفة لطبولوجيا الخدمات المصغرة

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