توزيع الخدمات المصغرة باستخدام تطبيقات الحاوية من Azure وDapr
توضح هذه المقالة حلا لتشغيل نظام إدارة الطلبات مع 10 خدمات مصغرة على Azure Container Apps. يستخدم الحل أيضاً أفضل ممارسات الخدمات المصغرة من خلال وقت تشغيل التطبيقات الموزّعة والتحجيم التلقائي المعتمد على أحداث Kubernetes.
خدمتا Dapr وTraefik علامتان تجاريتان لشركاتهما المعنية. ولا ينطوي استخدام هذه العلامات على أية مصادقة.
بناء الأنظمة
قم بتنزيل ملف PowerPoint لهذا التصميم.
تدفق البيانات
يستخدم هذا الحل قوالب Bicep لتنفيذ توزيع نظام إدارة الطلبات Reddog وبنيته الأساسية الداعمة لـ Azure. تتكون البنية من بيئة Azure Container Apps واحدة تستضيف 10 تطبيقات .NET Core للخدمات المصغرة. سوف تستخدم عدة تطوير برامج وقت تشغيل التطبيقات الموزّعة لـ .NET Core للتكامل مع موارد Azure من خلال النشر والاشتراك (pub/sub) وكتل الإنشاء للحالة والروابط. عادةً ما يوفر وقت تشغيل التطبيقات الموزّعة المرونة عند تنفيذ المكونات، لكن هذا الحل يستند إلى مجرد رأي. تستفيد الخدمات أيضاً من قواعد مقياس التحجيم التلقائي المعتمد على أحداث Kubernetes، للسماح بالتحجيم استناداً إلى مشغلات الأحداث والتحجيم إلى صفر سيناريوهات.
تصف القائمة التالية كل خدمة مصغرة وتكوين Azure Container Apps الذي تنشر به. راجع مستودع تعليمات reddog البرمجية على GitHub لعرض التعليمة البرمجية.
Traefik: الوكيل الأساسي لتوجيه طلبات المستخدم من واجهة المستخدم إلى خدمة المحاسبة وخدمة Makeline للوحة المعلومات التفاعلية.
واجهة المستخدم: لوحة معلومات تعرض في الوقت الحقيقي الطلب وبيانات المبيعات المجمعة لنظام إدارة الطلبات Reddog.
العميل الظاهري: برنامج لمحاكاة العملاء يحاكي العملاء الذين يقدمون الطلبات عبر خدمة الطلب.
خدمة الطلب: واجهة برمجة تطبيقات CRUD لتقديم الطلبات وإدارتها.
خدمة المحاسبة: خدمة تتولى معالجة بيانات الطلب وتخزينها وتجميعها. فهي تحوّل أوامر العملاء إلى مقاييس مبيعات ذات دلالة تعرضها واجهة المستخدم.
خدمة الإيصالات: برنامج أرشفة ينشئ إيصالات الطلب ويخزنها لأغراض التدقيق والمحفوظات.
خدمة الولاء: خدمة تدير برنامج الولاء من خلال تعقب نقاط مكافأة العملاء بناءً على إنفاق الطلب.
خدمة Makeline: خدمة مسؤولة عن إدارة قائمة انتظار الطلبات الحالية التي تنتظر الاستيفاء. فهي تتعقب معالجة الطلبات وإكمالها بواسطة خدمة العامل الظاهري.
العامل الظاهري: برنامج لمحاكاة العامل يحاكي إكمال طلبات العملاء.
Bootstrapper (غير موضحة): خدمة تستخدم ذاكرة Entity Framework الأساسية لتهيئة الجداول داخل قاعدة بيانات Azure SQL لاستخدامها مع خدمة المحاسبة.
| الخدمة | دخول | مكون وقت تشغيل التطبيقات الموزّعة | قواعد مقياس التحجيم التلقائي المعتمد على أحداث Kubernetes |
|---|---|---|---|
| Traefik | خارجي | وقت تشغيل التطبيقات الموزّعة غير مُمكَّن | HTTP |
| واجهة المستخدم | داخلي | وقت تشغيل التطبيقات الموزّعة غير مُمكَّن | HTTP |
| العميل الظاهري | بلا | استدعاء خدمة إلى خدمة | غير متوفر |
| خدمة الطلب | داخلي | النشر والاشتراك: ناقل خدمة Azure | HTTP |
| خدمة المحاسبة | داخلي | النشر والاشتراك: ناقل خدمة Azure | طول الموضوع في ناقل خدمة Azure، HTTP |
| خدمة الإيصالات | داخلي | Pub/sub: ناقل خدمة Azure الربط: Azure Blob |
طول الموضوع في ناقل خدمة Azure |
| خدمة الولاء | داخلي | Pub/sub: ناقل خدمة Azure الحالة: إنشاء قاعدة بيانات Azure Cosmos |
طول الموضوع في ناقل خدمة Azure |
| خدمة Makeline | داخلي | Pub/sub: ناقل خدمة Azure الحالة: Azure Redis |
طول الموضوع في ناقل خدمة Azure، HTTP |
| العامل الظاهري | بلا | استدعاء الخدمة للخدمة الربط: Cron |
غير متوفر |
إشعار
يمكنك أيضاً تنفيذ Bootstrapper في تطبيق حاوية. ومع ذلك، يتم تشغيل هذه الخدمة مرة واحدة لتنفيذ إنشاء قاعدة البيانات، ثم يتم تغيير حجمها إلى صفر بعد إنشاء الكائنات اللازمة في قاعدة بيانات Azure SQL.
المكونات
يستخدم هذا الحل المكونات التالية:
- مجموعات موارد Azure هي حاويات منطقية لموارد Azure. يمكنك استخدام مجموعة موارد واحدة لبناء كل ما يتعلق بهذا الحل في مدخل Microsoft Azure.
- Azure Container Apps هي خدمة حاوية مدارة بالكامل بلا خادم تستخدم لإنشاء التطبيقات الحديثة ونشرها على نطاق واسع. في هذا الحل، تستضيف جميع الخدمات المصغرة العشرة على Azure Container Apps وتنشرها في بيئة تطبيق حاوية واحدة. تعمل هذه البيئة كحدّ آمن يحيط بالنظام.
- ناقل خدمة Azureهو وسيط رسائل مؤسسي مُدار بالكامل يعمل بشكل تكاملي مع قوائم الانتظار وموضوعات النشر والاشتراك. في هذا الحل، استخدمه لتنفيذ مكون النشر والاشتراك لوقت تشغيل التطبيقات الموزّعة. تستخدم خدمات متعددة هذا المكون. تنشر خدمة الطلب الرسائل على الناقل، وتشترك خدمات Makeline والمحاسبة والولاء والإيصالات في هذه الرسائل.
- قاعدة بيانات Azure Cosmos هي خدمة قاعدة بيانات NoSQL مُدارة متعددة النماذج. استخدمها كمكون تخزين حالة وقت تشغيل التطبيقات الموزّعة لخدمة الولاء، لتخزين بيانات ولاء العميل.
- ذاكرة التخزين المؤقت من Azure لـ Redis هي ذاكرة تخزين مؤقت مضمنة في الذاكرة، موزّعة ومُدارة وقابلة للتوسع. تُستخدم هذه الخدمة كمكون مخزن حالة وقت تشغيل التطبيقات الموزّعة لخدمة Makeline لتخزين البيانات على الطلبات الجارية معالجتها.
- Azure SQL Database هي خدمة قاعدة بيانات ذكية وقابلة للتطوير وارتباطية مصممة لخدمة السحابة. يمكنك إنشاؤها لخدمة المحاسبة، التي تستخدم ذاكرة Entity Framework الأساسية للربط بقاعدة البيانات. خدمة Bootstrapper مسؤولة عن إعداد جداول SQL في قاعدة البيانات، ثم يتم تشغيلها مرة واحدة قبل تأسيس الاتصال بخدمة المحاسبة.
- يخزن مخزن Azure Blob كميات هائلة من بيانات الكائنات غير المهيكلة، مثل النصوص أو الملفات الثنائية. تستخدم خدمة الإيصالات مخزن الكائنات الثنائية كبيرة الحجم عبر ربط إخراج وقت تشغيل التطبيقات الموزّعة لتخزين إيصالات الطلب.
- Traefik هو وكيل وموازن تحميل عكسي حديث ورائد ييسّر توزيع الخدمات المصغرة. في هذا الحل، استخدم ميزة التكوين الديناميكي في Traefik لإجراء التوجيه المستند إلى المسار من واجهة المستخدم، وهو تطبيق Vue.js من صفحة واحدة (SPA). يمكّن هذا التكوين أيضاً استدعاءات واجهة برمجة التطبيقات المباشرة إلى خدمات الخلفية لغرض الاختبار.
- يمكّنك Azure Monitor من جمع بيانات محتوى العميل وتحليلها والعمل عليها من بيئات البنية الأساسية لـ Azure. ستستخدمه مع Application Insights لعرض سجلات الحاويات وجمع المقاييس من الخدمات المصغرة.
البدائل
في هذا الهيكل، يمكنك توزيع وكيل Traefik لتمكين التوجيه المستند إلى المسار لواجهة برمجة تطبيقات Vue.js. هناك العديد من الوكلاء البديلين مفتوحي المصدر الذين يمكنك استخدامهم لهذا الغرض. هناك مشروعان شائعان آخران هما NGINX وHAProxy.
باستثناء قاعدة بيانات Azure SQL، تستخدم جميع البنى الأساسية لـ Azure مكونات وقت تشغيل التطبيقات الموزّعة لتوفير إمكانية التشغيل التفاعلي. تتمثل إحدى فوائد وقت تشغيل التطبيقات الموزّعة في أنه يمكنك مبادلة جميع هذه المكونات عن طريق تغيير تكوين توزيع تطبيقات الحاوية. في هذه الحالة، تم اختيار ناقل خدمة Azure وAzure Cosmos DB وذاكرة التخزين المؤقت ل Redis وBlob Storage لعرض بعض مكونات Dapr المتوفرة التي تبلغ أكثر من 70. توجد قائمة بالعناصر البديلة من وسطاء النشر والاشتراك ومخازن الحالة وروابط الإخراج في مستندات وقت تشغيل التطبيقات الموزّعة.
تفاصيل السيناريو
الخدمات المصغرة هي نمط هيكلي شائع بشكل متزايد يمكن أن يكون له العديد من الفوائد، بما في ذلك قابلية التوسع العالية ودورات التطوير الأقصر والبساطة المتزايدة. يمكنك استخدام الحاويات كآلية لتوزيع تطبيقات الخدمات المصغرة، ثم استخدام منسق حاوية مثل Kubernetes لتبسيط العمليات. هناك العديد من العوامل التي تجب مراعاتها لهياكل الخدمات المصغرة واسعة النطاق. عادةً ما يتطلب النظام الأساسي للبنية الأساسية فهماً كبيراً للتقنيات المعقدة مثل منسقي الحاويات.
Azure Container Apps هي خدمة حاوية بلا خادم مدارة بالكامل لتشغيل التطبيقات الحديثة على نطاق واسع. تمكّنك هذه الخدمة من توزيع التطبيقات الموجودة في حاويات من خلال تجريد النظام الأساسي المصدر. بهذه الطريقة، لن تحتاج إلى إدارة بنية أساسية معقدة. يتم تشغيل Azure Container Apps بواسطة تقنيات مفتوحة المصدر.
يستخدم هذا الهيكل تكامل تطبيقات الحاوية من Azure مع إصدار مُدار من وقت تشغيل التطبيقات الموزّعة (Dapr). وقت تشغيل التطبيقات الموزّعة هو مشروع مفتوح المصدر يساعد المطورين في مواجهة التحديات المتأصلة في التطبيقات الموزّعة، مثل إدارة الحالة واستدعاء الخدمة.
توفر Azure Container Apps أيضا إصدارا مدارا من التحجيم التلقائي المستند إلى أحداث Kubernetes (KEDA). يتيح التحجيم التلقائي المعتمد على أحداث Kubernetes التحجيم التلقائي لحاوياتك استناداً إلى الأحداث الواردة من الخدمات الخارجية، مثل ناقل خدمة Azure وذاكرة التخزين المؤقت من Azure لـ Redis.
يمكنك أيضا تمكين دخول HTTPS في Azure Container Apps دون إنشاء المزيد من موارد شبكة Azure. يمكنك استخدام وكيل Envoy، والذي يسمح أيضاً بسيناريوهات تقسيم نسبة استخدام الشبكة.
لاستكشاف كيفية مقارنة Azure Container Apps بالأنظمة الأساسية الأخرى لاستضافة الحاويات في Azure، راجع مقارنة تطبيقات الحاوية بخيارات حاوية Azure الأخرى.
توضح هذه المقالة حلا لتشغيل نظام إدارة الطلبات مع 10 خدمات مصغرة على Azure Container Apps. يستخدم الحل أيضاً أفضل ممارسات الخدمات المصغرة من خلال وقت تشغيل التطبيقات الموزّعة والتحجيم التلقائي المعتمد على أحداث Kubernetes.
حالات الاستخدام المحتملة
ينطبق هذا الحل على أي مؤسسة تستخدم خدمات مصغرة عديمة الحالة أو ذات حالة للأنظمة الموزّعة. هذا الحل هو الأفضل للسلع المعبأة بواسطة المستهلك والصناعات التحويلية التي تتضمن نظام الطلب والاستيفاء.
هذه الحلول الأخرى لها تصميمات مماثلة:
- بنية الخدمات المصغرة في خدمة Azure Kubernetes (AKS)
- هيكل الخدمات المصغرة على دالات Azure
- الهياكل المعتمدة علي الأحداث
الاعتبارات
تطبق هذه الاعتبارات ركائز إطار العمل جيد التصميم في Azure، وهي مجموعة من المبادئ التوجيهية التي يمكنك استخدامها لتحسين جودة حمل العمل. لمزيد من المعلومات، يرجى مراجعةMicrosoft Azure Well-Architected Framework.
الموثوقيه
تضمن الموثوقية أن التطبيق الخاص بك يمكن أن يفي بالالتزامات التي تتعهد بها لعملائك. لمزيد من المعلومات، يرجى مراجعة نظرة عامة على ركيزة الموثوقية.
تعمل تطبيقات الحاوية من Azure على Kubernetes خلف الكواليس. يتم تضمين آليات المرونة في Kubernetes الذي يراقب الحاويات، أو الحجيرات، وتعيد تشغيلها في حال وجود مشكلات. تجتمع آليات المرونة مع موازن التحميل المضمن لتشغيل نسخ متماثلة متعددة من كل تطبيق حاوية. مع هذا التكرار، يمكن أن يتغاضى الحل عن عدم توفر أحد المثيلات.
يمكنك استخدام Azure Monitor وApplication Insights لمراقبة Azure Container Apps. يمكنك عرض سجلات الحاوية عن طريق التنقل في المدخل إلى جزء السجلات في كل تطبيق حاوية، ثم تشغيل استعلام Kusto التالي. يوضح هذا المثال السجلات لتطبيق خدمة Makeline.
ContainerAppConsoleLogs_CL |
where ContainerAppName_s contains "make-line-service" |
project TimeGenerated, _timestamp_d, ContainerGroupName_s, Log_s |
order by _timestamp_d asc
كما توضح خريطة التطبيق في Application Insights كيفية اتصال الخدمات في الوقت الحقيقي. يمكنك بعد ذلك استخدامها لتصحيح الأخطاء في السيناريوهات. انتقل إلى خريطة التطبيق ضمن مورد Application Insights لعرض شيء يبدو كما يلي.
لمزيد من المعلومات حول مراقبة Azure Container Apps، راجع مراقبة تطبيق في Azure Container Apps.
تحسين التكلفة
يمكنك تحسين التكلفة عن طريق البحث عن طرق للحد من النفقات غير الضرورية وتحسين الكفاءات التشغيلية. لمزيد من المعلومات، راجع نظرة عامة على ركيزة تحسين التكلفة.
استخدم حاسبة أسعار Azure لتقدير تكاليف الخدمات في هذا الهيكل.
كفاءة الأداء
كفاءة الأداء هي قدرة حمل العمل على التوسع لتلبية المتطلبات التي تفرضها عليه بطريقة فعالة. لمزيد من المعلومات، يرجى مراجعةأنماط كفاءة الأداء.
يعتمد هذا الحل بشكل كبير على تنفيذ KEDA في Azure Container Apps للتحجيم المستند إلى الحدث. عند نشر خدمة العملاء الظاهرية، فإنها ستضع الطلبات باستمرار، ما يؤدي إلى توسيع نطاق خدمة الطلب عبر متدرج HTTP KEDA. تنشر خدمة الطلب الطلبات على ناقل الخدمة، لذا تتسبب أداة التحجيم التلقائي المعتمد على أحداث Kubernetes لناقل الخدمة في توسيع نطاق خدمات المحاسبة والإيصالات وMakeline والولاء. كما تعمل تطبيقات حاوية واجهة المستخدم وتطبيقات واجهة Traefik على تكوين أداة التحجيم التلقائي المعتمد على أحداث Kubernetes لـ HTTP، بحيث يتم توسيع نطاق التطبيقات مع وصول المزيد من المستخدمين إلى لوحة المعلومات.
أثناء عدم تشغيل العميل الظاهري، يتم تغيير حجم جميع الخدمات المصغرة في هذا الحل إلى صفر باستثناء خدمتيْ العامل الظاهري وMakeline. لا يقل حجم العامل الظاهري لأنه يتحقق باستمرار من استيفاء الطلب. لمزيد من المعلومات حول التحجيم في تطبيقات الحاوية، راجع تعيين قواعد التحجيم في تطبيقات الحاوية من Azure. لمزيد من المعلومات حول أدوات التحجيم التلقائي المعتمد على أحداث Kubernetes، اقرأ وثائق التحجيم التلقائي المعتمد على أحداث Kubernetes بخصوص أدوات التحجيم.
نشر هذا السيناريو
للحصول على إرشادات التوزيع، راجع العرض التوضيحي حول Red Dog: توزيع تطبيقات الحاوية من Azure على GitHub.
The Red Dog Demo: Microservices integration is a packaged app template that builds on the preceding code assets to demonstrate the integration of Azure Container Apps, App Service, Functions, and API Management and provisions the infra, deploys the code using GitHub Actions.
المساهمون
تحتفظ Microsoft بهذه المقالة. وهي مكتوبة في الأصل من قبل المساهمين التاليين.
الكاتب الرئيسي:
- أليس جيبونز | الحزام الأسود العالمي الأصلي للسحابة
مساهمون آخرون:
- كيندال رودن | مدير أول للبرنامج
- Lynn Orrell | أخصائي الحلول الرئيسي (GBB)
لمشاهدة ملفات تعريف LinkedIn غير العامة، سجل الدخول إلى LinkedIn.
الخطوات التالية
- مستندات تطبيقات الحاوية من Azure
- مقارنة عروض الحاويات في Azure
- تطبيقات نظام إدارة أوامر Reddog الأخرى:
