أنماط التصميم لتطبيقات SaaS متعددة المستأجرين والبحث المعرفي Azure

التطبيق متعدد المستأجرين هو التطبيق الذي يوفر نفس الخدمات والقدرات لأي عدد من المستأجرين الذين لا يستطيعون رؤية أو مشاركة بيانات أي مستأجر آخر. يناقش هذا المستند استراتيجيات عزل المستأجر للتطبيقات متعددة المستأجرين التي تم إنشاؤها باستخدام Azure Cognitive Search.

Azure Cognitive Search concepts

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

خدمات البحث والفهارس والحقول والمستندات

قبل مناقشة أنماط التصميم ، من المهم فهم بعض المفاهيم الأساسية.

عند استخدام Azure Cognitive Search، يشترك المرء في خدمة بحث. عند تحميل البيانات إلى Azure Cognitive Search، يتم تخزينها في فهرس داخل خدمة البحث. يمكن أن يكون هناك عدد من الفهارس داخل خدمة واحدة. لاستخدام المفاهيم المألوفة لقواعد البيانات ، يمكن تشبيه خدمة البحث بقاعدة بيانات بينما يمكن تشبيه الفهارس داخل الخدمة بالجداول داخل قاعدة البيانات.

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

قابلية التوسع

يمكن لأي خدمة البحث Azure Cognitive في طبقة التسعير القياسية التوسع في بعدين: التخزين والتوافر.

  • يمكن إضافة أقسام لزيادة تخزين خدمة البحث.
  • يمكن إضافة النسخ المتماثلة إلى خدمة لزيادة إنتاجية الطلبات التي يمكن لخدمة البحث التعامل معها.

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

هناك عدد قليل من مستويات التسعير المختلفة في Azure Cognitive Search، ولكل طبقة من المستويات حدود وحصص مختلفة. بعض هذه الحدود على مستوى الخدمة ، وبعضها على مستوى الفهرس ، وبعضها على مستوى التقسيم.

أساسي قياسي1 قياسي2 قياسي3 قياسي3 HD
الحد الأقصى للنسخ المتماثلة لكل خدمة 3 12 12 12 12
الحد الأقصى للأقسام لكل خدمة 1 12 12 12 3
الحد الأقصى لوحدات البحث (النسخ المتماثلة*الأقسام) لكل خدمة 3 36 36 36 36 (بحد أقصى 3 أقسام)
الحد الأقصى للتخزين لكل خدمة 2 جيجا بايت 300 غيغابايت 1.2 تيرابايت 2.4 تيرابايت 600 جيجابايت
الحد الأقصى للتخزين لكل قسم 2 جيجا بايت 25 غيغابايت 100 جيجابايت 200 جيجابايت 200 جيجابايت
الحد الأقصى للفهارس لكل خدمة 5 50 200 200 3000 (بحد أقصى 1000 فهرس/قسم)

S3 عالية الكثافة

في طبقة تسعير S3 الخاصة ب Azure Cognitive Search، يوجد خيار لوضع الكثافة العالية (HD) المصمم خصيصا للسيناريوهات متعددة المستأجرين. في كثير من الحالات ، من الضروري دعم عدد كبير من المستأجرين الأصغر حجما تحت خدمة واحدة لتحقيق فوائد البساطة وكفاءة التكلفة.

يسمح S3 HD بتعبئة العديد من المؤشرات الصغيرة تحت إدارة خدمة بحث واحدة من خلال تداول القدرة على توسيع نطاق الفهارس باستخدام أقسام للقدرة على استضافة المزيد من المؤشرات في خدمة واحدة.

تم تصميم خدمة S3 لاستضافة عدد ثابت من الفهارس (بحد أقصى 200) والسماح لكل فهرس بالتوسع في الحجم أفقيا عند إضافة أقسام جديدة إلى الخدمة. تؤدي إضافة أقسام إلى خدمات S3 HD إلى زيادة الحد الأقصى لعدد الفهارس التي يمكن للخدمة استضافتها. الحد الأقصى المثالي للحجم لمؤشر S3HD فردي هو حوالي 50 - 80 جيجابايت ، على الرغم من عدم وجود حد ثابت للحجم على كل مؤشر يفرضه النظام.

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

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

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

  • تكلفة الموارد السحابية: كما هو الحال مع أي تطبيق آخر ، يجب أن تظل حلول البرامج تنافسية من حيث التكلفة كمكون من مكونات تطبيق متعدد المستأجرين.

  • سهولة العمليات: عند تطوير بنية متعددة المستأجرين ، يعد التأثير على عمليات التطبيق وتعقيده اعتبارا مهما. يحتوي Azure Cognitive Search على اتفاقية مستوى الخدمة بنسبة 99.9٪.

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

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

يوفر Azure Cognitive Search بعض الحدود التي يمكن استخدامها لعزل بيانات المستأجرين وعبء العمل.

في حالة سيناريو متعدد المستأجرين، يستهلك مطور التطبيق خدمة بحث واحدة أو أكثر ويقسم المستأجرين بين الخدمات أو الفهارس أو كليهما. يحتوي Azure Cognitive Search على بعض الأنماط الشائعة عند نمذجة سيناريو متعدد المستأجرين:

  • مؤشر واحد لكل مستأجر: لكل مستأجر فهرس خاص به ضمن خدمة بحث تتم مشاركتها مع مستأجرين آخرين.

  • خدمة واحدة لكل مستأجر: لكل مستأجر خدمة البحث Azure Cognitive مخصص خاص به، مما يوفر أعلى مستوى من البيانات وفصل عبء العمل.

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

النموذج 1: مؤشر واحد لكل مستأجر

A portrayal of the index-per-tenant model

في نموذج الفهرس لكل مستأجر، يشغل العديد من المستأجرين خدمة البحث Azure Cognitive واحد حيث يكون لكل مستأجر فهرسه الخاص.

يحقق المستأجرون عزل البيانات لأن جميع طلبات البحث وعمليات المستندات يتم إصدارها على مستوى فهرس في Azure Cognitive Search. في طبقة التطبيق ، هناك حاجة إلى الوعي لتوجيه حركة مرور المستأجرين المختلفة إلى الفهارس المناسبة مع إدارة الموارد على مستوى الخدمة عبر جميع المستأجرين.

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

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

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

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

إذا كان العدد الإجمالي للمؤشرات أكبر من اللازم لخدمة واحدة، فيجب توفير خدمة أخرى لاستيعاب المستأجرين الجدد. إذا كان يجب نقل الفهارس بين خدمات البحث عند إضافة خدمات جديدة، فيجب نسخ البيانات من الفهرس يدويا من فهرس إلى آخر لأن Azure Cognitive Search لا يسمح بنقل فهرس.

النموذج 2: خدمة واحدة لكل مستأجر

A portrayal of the service-per-tenant model

في بنية الخدمة لكل مستأجر، يكون لكل مستأجر خدمة بحث خاصة به.

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

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

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

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

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

نموذج 3: هجين

وهناك نمط آخر لنمذجة الإيجارات المتعددة يتمثل في المزج بين استراتيجيات المؤشر لكل مستأجر والخدمة لكل مستأجر.

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

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

تحقيق دقة أدق

تفترض أنماط التصميم المذكورة أعلاه لنمذجة سيناريوهات متعددة المستأجرين في Azure Cognitive Search نطاقا موحدا حيث يكون كل مستأجر مثيلا كاملا للتطبيق. ومع ذلك ، يمكن للتطبيقات في بعض الأحيان التعامل مع العديد من النطاقات الأصغر.

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

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

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

ملاحظة

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

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

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