نشر واستكشاف تطبيق SaaS متعدد المستأجرين يستخدم نمط قاعدة البيانات لكل مستأجر من خلال قاعدة بيانات Azure SQL

ينطبق على: قاعدة بيانات Azure SQL

في هذا البرنامج التعليمي، يمكنك نشر واستكشاف تطبيق قاعدة بيانات لكل مستأجرWingtip Tickets SaaS (Wingtip). يستخدم التطبيق نمط قاعدة بيانات لكل مستأجر لتخزين بيانات العديد من المستأجرين. تم تصميم التطبيق لعرض ميزات قاعدة بيانات Azure SQL التي تبسط كيفية تمكين سيناريوهات SaaS.

بعد خمس دقائق من تحديد Deploy to Azure، سيكون لديك تطبيق SaaS متعدد المستأجرين. يتضمن التطبيق قاعدة بيانات تعمل في قاعدة بيانات Azure SQL. يتم نشر التطبيق مع عينة من ثلاثة مستأجرين، ولكل منهم قاعدة بيانات خاصة به. يتم نشر جميع قواعد البيانات في تجمع مرنة لـSQL. يتم نشر التطبيق على اشتراك Azure الخاص بك. لديك حق الوصول الكامل لاستكشاف مكونات التطبيق الفردية والعمل معها. تتوفر التعليمات البرمجية المصدر C # للتطبيق والبرامج النصية للإدارة في WingtipTicketsSaaS-DbPerTenant GitHub repo.

ستتعلم في هذا البرنامج التعليمي ما يلي:

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

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

المتطلبات الأساسية

لإكمال هذا البرنامج التعليمي، تأكد من تثبيت Azure PowerShell. لمزيد من المعلومات، راجع البدء باستخدام Azure PowerShell.

نشر تطبيق Wingtip Tickets SaaS

تخطيط الأسماء

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

  • المستخدم: af1 يتكون من الأحرف الأولى من آن فينلي بالإضافة إلى رقم. إذا قمت بنشر التطبيق مرة أخرى، استخدم قيمة مختلفة. على سبيل المثال af2.
  • مجموعة الموارد: wingtip-dpt-af1 يشير إلى أن هذا هو تطبيق قاعدة البيانات لكل مستأجر. مع إلحاق اسم المستخدم af1 لربط اسم مجموعة الموارد بأسماء الموارد التي يحتوي عليها.

اختر أسماءكم الآن، ودونوها.

‏‏الخطوات

  1. لفتح قالب النشر Wingtip Tickets SaaS لقاعدة بيانات لكل مستأجر في المدخل Azure، حدد Deploy to Azure.

    Image showing a button labeled

  2. أدخِل القيم في القالب للمعلمات المطلوبة.

    هام

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

    • Resource group: حددCreate new، ثم أدخِل اسماً فريداً اخترته سابقًا لمجموعة الموارد.
    • Location: حدد موقعاً من القائمة المنسدلة.
    • User: استخدام قيمة اسم المستخدم الذي اخترته سابقًا.
  3. نشر التطبيق.

    أ. حدد خانة أوافق على الشروط والأحكام.

    ب. اختر⁧⁩Purchase⁧⁩.

  4. لمراقبة حالة النشر، حدد Notifications (رمز الجرس الموجود يمين مربع البحث). يستغرق نشر تطبيق Wingtip Tickets SaaS حوالي خمس دقائق.

    Deployment succeeded

تنزيل البرامج النصية لإدارة Wingtip Tickets وإلغاء حظرها

أثناء نشر التطبيق، قم بتنزيل التعليمات البرمجية المصدر والبرامج الإدارة النصية.

هام

قد يقوم نظام Windows بحظر المحتويات القابلة للتنفيذ (البرامج النصية وDLLs) عند تنزيل ملفات .zip من مصدر خارجي واستخراجها. اتبع الخطوات لإلغاء حظر الملف .zip قبل استخراج البرامج النصية. يعمل إلغاء الحظر على التأكد من السماح بتشغيل البرامج النصية.

  1. تصفح WingtipTicketsSaaS-DbPerTenant GitHub repo.
  2. حدد ⁧⁩«Clone or download»⁧⁩.
  3. حدد Download ZIP، ثم احفظ الملف.
  4. انقر بزر الماوس الأيمن فوق الملف WingtipTicketsSaaS-DbPerTenant-master.zip، ثم حدد Properties.
  5. في علامة التبويب General حدد Unblock>Apply.
  6. حدد OK، واستخراج الملفات

توجد البرامج النصية في المجلد ...\WingtipTicketsSaaS-DbPerTenant-master\Learning Modules.

تحديث ملف تكوين المستخدم لهذا النشر

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

  1. في PowerShell ISE، افتح ...\Learning Modules\UserConfig.psm1
  2. تحديث ResourceGroupNameوName بالقيم المعينة للنشر الخاص بك (على السطرين 10 و11 فقط).
  3. حفظ التغييرات.

تتم الإشارة إلى هذه القيم في كل برنامج نصي تقريبًا.

شغّل التطبيق

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

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

توفر صفحة Events Hub المركزية قائمة بالروابط للمستأجرين في عملية النشر.

  1. استخدم عنوان URL لفتح Events Hub في مستعرض الويب الخاص بك: http://events.wingtip-dpt.<user>.trafficmanager.net. استبدل <user> بقيمة المستخدم الخاصة بالنشر.

    Events Hub

  2. حدد Fabrikam Jazz Club في Events Hub.

    Events

Azure Traffic Manager

يستخدم التطبيق Wingtip Azure Traffic Manager للتحكم في توزيع الطلبات الواردة. يستخدم عنوان URL للوصول إلى صفحة الأحداث لمستأجر معين التنسيق التالي:

  • http://events.wingtip-dpt.<user>.trafficmanager.net/fabrikamjazzclub

    يتم شرح أجزاء التنسيق السابق في الجدول التالي.

    جزء URL الوصف
    events.wingtip-dpt أجزاء الأحداث من التطبيق Wingtip.

    -dpt يميز تنفيذ قاعدة البيانات لكل مستأجر من تطبيق Wingtip Tickets من عمليات التنفيذ الأخرى. ومن الأمثلة على ذلك عمليات تنفيذ مستأجر لكل تطبيقفردية(-sa) أو قاعدة بيانات متعدد المستأجرين ( -mt).
    . <user> af1 في المثال.
    .trafficmanager.net/ مدير حركة المرور، وعنوان URL الأساسي.
    fabrikamjazzclub تعرف المستأجر المسمى Fabrikam Jazz Club.
  • يتم تحليل اسم المستأجر من عنوان URL بواسطة تطبيق الأحداث.

  • يتم استخدام اسم المستأجر لإنشاء مفتاح.

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

    • يتم تطبيق الكتالوج باستخدام إدارة مخطط القطع.
  • يستخدم Events Hub بيانات التعريف الموسعة في الكتالوج لإنشاء عناوين URL لصفحة قائمة الأحداث لكل مستأجر.

في بيئة الإنتاج، عادةً ما تقوم بإنشاء سجل CNAME DNS لتوجيه مجال الإنترنت للشركة إلى اسم DNS لإدارة حركة المرور.

ملاحظة

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

ابدأ في إنشاء التحميل على قواعد بيانات المستأجر

الآن بعد نشر التطبيق، دعونا نشغله.

يبدأ البرنامج النصي Demo-LoadGenerator PowerShell حمل عمل الذي يعمل مقابل كافة قواعد بيانات المستأجرين. الحمل في العالم الحقيقي على العديد من تطبيقات SaaS متقطع ولا يمكن التنبؤ به. لمحاكاة هذا النوع من التحميل، ينتج المولد حمولة ذات طفرات عشوائية أو اندفاعات النشاط على كل مستأجر. تحدث الاندفاعات على فترات عشوائية. يستغرق الأمر عدة دقائق حتى يظهر نمط التحميل. السماح بتشغيل المولد لمدة ثلاث أو أربع دقائق على الأقل قبل مراقبة الحمل.

  1. في PowerShell ISE، افتح البرنامج النصي ...\Learning Modules\Utilities\Demo-LoadGenerator.ps1.
  2. اضغط على F5 لتشغيل البرنامج النصي وبدء تشغيل مولد التحميل. اترك قيم المعلمات الافتراضية في الوقت الحالي.
  3. سجل الدخول إلى حسابك في Azure، وحدد الاشتراك الذي تريد استخدامه، إذا لزم الأمر.

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

مراقبة المهام في الخلفية

إذا كنت ترغب في التحكم بالمهام في الخلفية ومراقبتها، استخدم أوامر cmdlets التالية:

  • Get-Job
  • Receive-Job
  • Stop-Job

إجراءات Demo-LoadGenerator.ps1

يحاكي Demo-LoadGenerator.ps1 حمل العمل النشط لمعاملات العملاء. تصف الخطوات التالية تسلسل الإجراءات التي يبدأها Demo-LoadGenerator.ps1:

  1. Demo-LoadGenerator.ps1يشغل LoadGenerator.ps1 في المقدمة.

    • يتم تخزين كلا الملفين ‎.ps1 ضمن المجلدات Learning Modules\Utilities\.
  2. LoadGenerator.ps1 يمر عبر كافة قواعد بيانات المستأجرين في الكتالوج.

  3. LoadGenerator.ps1 يبدأ مهمة PowerShell في الخلفية لكل قاعدة من قواعد بيانات المستأجرين:

    • بشكل افتراضي، يتم تشغيل المهام في الخلفية لمدة 120 دقيقة.
    • كل مهمة تؤدي إلى حمل يستند إلى وحدة المعالجة المركزية على قاعدة بيانات مستأجر واحدة بتنفيذ sp_CpuLoadGenerator. تختلف كثافة الحمل ومدته حسب $DemoScenario.
    • sp_CpuLoadGenerator يمر عبر عبارة SELECT SQL التي تؤدي إلى زيادة حمل وحدة المعالجة المركزية CPU. يختلف الفاصل الزمني بين مشكلات SELECT وفقا لقيم المعلمة لإنشاء حمل وحدة المعالجة المركزية CPU قابل للتحكم. يتم عشوائية مستويات التحميل والفواصل الزمنية لمحاكاة الأحمال أكثر واقعية.
    • يتم تخزين ملف .sql هذا ضمن WingtipTenantDB\dbo\StoredProcedures\.
  4. إذا $OneTime = $false، يبدأ مولد التحميل المهام في الخلفية ثم يستمر في التشغيل. كل 10 ثوان، يقوم بمراقبة أي مستأجر من المستأجرين الجدد الذين يتم توفيرهم. إذا قمت بتعيين $OneTime = $true، يبدأ مولد التحميل المهام في الخلفية ثم يتوقف عن العمل في المقدمة. لهذا البرنامج التعليمي اترك $OneTime = $false.

    إذا كنت ترغب في إيقاف أو إعادة تشغيل مولد التحميل، فاستخدم مفاتيح Ctrl-C أو Ctrl-Break لإيقاف العملية.

    إذا تركت مولد التحميل قيد التشغيل في المقدمة، استخدم مثيل PowerShell ISE آخر لتشغيل برامج PowerShell النصية الأخرى.

 

قبل الاستمرار في القسم التالي، اترك مولد التحميل قيد التشغيل في حالة استدعاء المهمة.

توفير مستأجر جديد

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

  1. افتح PowerShell ISE جديدة.

  2. افتح ...\Learning Modules\Provision and Catalog\Demo-ProvisionAndCatalog.ps1.

  3. لتشغيل البرنامج النصي، اضغط على F5. اترك القيم الافتراضية في الوقت الحالي.

    ملاحظة

    تستخدم العديد من برامج Wingtip SaaS النصية $PSScriptRoot لاستعراض المجلدات لاستدعاء الدالات في البرامج النصية الأخرى. يتم تقييم هذا المتغير فقط عند تنفيذ البرنامج النصي الكامل عن طريق الضغط على F5. يمكن أن يؤدي تمييز التحديد وتشغيله باستخدام F8 إلى حدوث أخطاء. لتشغيل البرنامج النصي، اضغط على F5.

قاعدة بيانات المستأجر الجديد:

  • تم إنشاؤها في تجمع مرن لـSQL.
  • تم تهيئتها.
  • مسجلة في الكتالوج.

بعد التوفير الناجح، يظهر موقع Events للمستأجر الجديد في المستعرض الخاص بك.

New tenant

حدث Events Hub لجعل المستأجر الجديد يظهر في القائمة.

استكشاف الخوادم والتجمعات وقواعد بيانات المستأجر

الآن بعد أن بدأت تشغيل حمل مقابل مجموعة من المستأجرين، دعونا نلقي نظرة على بعض الموارد التي تم نشرها.

  1. في مدخل Azure، تصفح للوصول إلى قائمة خوادم SQL. ثم افتح خادم catalog-dpt-<USER> .

    • يحتوي خادم الكتالوج على قاعدتي بيانات، tenantcatalog وbasetenantdb (قاعدة بيانات قالب التي تم نسخها لإنشاء المستأجرين جديدة).

    Screenshot shows a catalog server Overview page with the two databases.

  2. عد إلى قائمة خوادم SQL الخاصة بك.

  3. فتح خادم tenants1-dpt-<USER> الذي يحتوي على قواعد بيانات المستأجر.

  4. راجع العناصر التالية:

    • كل قاعدة من قواعد بيانات المستأجر هي قاعدة بيانات قياسية مرنة في تجمع 50-eDTU القياسي.
    • قاعدة بيانات Red Maple Racing هي قاعدة بيانات المستأجر التي وفرتها سابقًا.

    Server with databases

مراقبة التجمع

بعد تشغيل LoadGenerator.ps1 لعدة دقائق، يجب أن تتوفر بيانات كافية لإعادة النظر في بعض قدرات المراقبة. هذه القدرات مضمنة في التجمعات وقواعد البيانات.

تصفح ‏‏الخادم tenants1-dpt-<user> وحدد Pool1 لعرض استخدام الموارد للتجمع. في المخططات التالية، عمل مولد التحميل لمدة ساعة واحدة.

Monitor pool

  • يظهر المخطط الأول، المسمى استخدام الموارد، استخدام eDTU للتجمع.
  • يظهر المخطط الثاني استخدام eDTU لقواعد البيانات الخمس الأكثر نشاطًا في التجمع.

يوضح المخططان أن التجمعات المرنة وقاعدة بيانات SQL مناسبة تمامًا لأحمال عمل تطبيقات SaaS التي لا يمكن التنبؤ بها. تظهر المخططات أن أربع قواعد بيانات يتم اندفاع كل منهم إلى ما يصل إلى 40 وحدة من وحدات eDTU، ومع ذلك يتم دعم كافة قواعد البيانات بشكل مريح بواسطة تجمع 50-eDTU. يمكن أن يدعم تجمع 50-eDTU حتى أحمال العمل الأثقل. إذا تم توفير قواعد البيانات كقواعد بيانات فردية، ستحتاج كل واحدة منهم إلى أن تكون S2 (50 DTU) لدعم الاندفاعات. تصل تكلفة أربع قواعد بيانات S2 فردية إلى ما يقرب من ثلاثة أضعاف سعر التجمع. في مواقف العالم الحقيقي، يُشغل عملاء قاعدة بيانات SQL ما يصل إلى 500 قاعدة بيانات في 200 تجمع eDTU. لمزيد من المعلومات، راجع البرنامج التعليمي لمراقبة الأداء.

الموارد الإضافية

الخطوات التالية

ستتعلم في هذا البرنامج التعليمي ما يلي:

  • كيفية نشر تطبيق Wingtip Tickets SaaS.
  • حول الخوادم والتجمعات وقواعد البيانات التي يتكون منها التطبيق.
  • كيفية تعيين المستأجرين إلى بياناتهم باستخدام الكتالوج.
  • كيفية توفير مستأجرين جدد.
  • كيفية عرض استخدام التجمع لمراقبة نشاط المستأجر.
  • كيفية حذف موارد العينة لإيقاف الفواتير ذات الصلة.

بعد ذلك، جرب البرنامج التعليمي حول التوفير والكتالوج.