فهم إعداد ImageStoreConnectionString

في بعض وثائقنا، نذكر بإيجاز وجود معلمة "ImageStoreConnectionString" دون وصف ما تعنيه حقاً. وبعد الاطلاع على مقالة مثل توزيع التطبيقات وإزالتها باستخدام PowerShell، يبدو أن كل ما عليك فعله هو نسخ/لصق القيمة كما هو موضح في بيان نظام المجموعة لنظام المجموعة المستهدف. لذلك يجب أن يكون الإعداد قابلاً للتكوين لكل نظام مجموعة، ولكن عند إنشاء نظام مجموعة من خلال مدخل Azure، لا يوجد خيار لتكوين هذا الإعداد وهو دائماً ما يكون "fabric:ImageStore". ما الغرض من هذا الإعداد إذن؟

بيان نظام المجموعة

بدأت Service Fabric كنظام أساسي للاستهلاك الداخلي لـ Microsoft بواسطة العديد من الفرق المتنوعة، لذلك فإن بعض جوانبها قابلاً للتخصيص بدرجة كبيرة - "مخزن الصور" هو أحد هذه الجوانب. في الأساس، يُعد مخزن الصور مستودعاً قابلاً للتوصيل لتخزين حزم التطبيقات. عند توزيع تطبيقك إلى عُقدة في نظام المجموعة، تنزل هذه العُقدة محتويات حزمة التطبيق خاصتك من مخزن الصور. ImageStoreConnectionString هو إعداد يتضمن جميع المعلومات الضرورية لكلٍ من العملاء والعُقد للعثور على مخزن الصور الصحيح لنظام مجموعة معين.

يوجد حالياً ثلاثة أنواع ممكنة من موفري مخزن الصور وسلاسل الاتصال المقابلة لهم هي كما يلي:

  1. خدمة مخزن الصور: "fabric:ImageStore"

  2. نظام الملفات: "file:[file system path]"

  3. Azure Storage: "xstore:DefaultEndpointsProtocol=https;AccountName=[...];AccountKey=[...];Container=[...]"

نوع الموفر المُستخدم في التشغيل هو خدمة مخزن الصور، وهي خدمة نظام ثابتة ذات حالة يمكنك رؤيتها من Service Fabric Explorer.

خدمة مخزن الصور

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

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

علاوةً على ذلك، لا ينبغي استخدام موفر نظام الملفات أو موفر Azure Storage كطريقة لمشاركة مخزن الصور بين نُظم مجموعات متعددة؛ سيؤدي ذلك إلى تلف بيانات تكوين نظام المجموعة حيث يمكن لكل نظام مجموعة كتابة بيانات متعارضة إلى مخزن الصور. لمشاركة حزم التطبيقات المُزوَّدة بين نُظم مجموعات متعددة، استخدم ملفات sfpkg بدلاً من ذلك، والتي يمكن تحميلها إلى أي مخزن خارجي باستخدام معرف URI للتنزيل.

لذلك في حين أن ImageStoreConnectionString قابل للتكوين، ما عليك سوى استخدام الإعداد الافتراضي فقط. عند النشر إلى Azure من خلال Visual Studio، يتم تعيين المعلمة تلقائياً لك وفقاً لذلك. للتوزيع البرمجي إلى نُظم المجموعات المُستضافة في Azure، تكون سلسلة الاتصال دائماً "fabric:ImageStore". على الرغم من أنه عند الشك، يمكن دائماً التحقق من قيمتها عن طريق استرداد بيان المجموعة بواسطة PowerShell أو .NET أو REST. يجب دائماً تكوين كل من نُظم مجموعات الاختبار والتشغيل المحلية لاستخدام موفر خدمة مخزن الصور أيضاً.

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

توزيع التطبيقات وإزالتها باستخدام PowerShell