مقدمة عن المجموعات الموثوقة في خدمات Azure Service Fabric ذات الحالة

تمكنك المجموعات الموثوقة من كتابة تطبيقات سحابية عالية التوافر وقابلة للتطوير ومنخفضة زمن الانتقال كما لو كنت تكتب تطبيقات كمبيوتر أحادية. توفر الفئات الموجودة في مساحة اسم Microsoft.ServiceFabric.Data.Collections مجموعة من المجموعات التي تجعل حالتك متوفرة بشكل كبير تلقائياً. يحتاج المطورون إلى البرمجة فقط إلى واجهات برمجة تطبيقات المجموعة الموثوقة والسماح للمجموعات الموثوقة بإدارة الحالة المنسوخة والمحلية.

الفرق الرئيسي بين المجموعات الموثوقة وتقنيات التوافر العالي الأخرى (مثل Redis وخدمة Azure Table وخدمة Azure Queue) هو إمكانية الاحتفاظ بالحالة محلياً في مثيل الخدمة مع توافرها أيضاً بشكل كبير. وهذا يعني:

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

Image of evolution of collections.

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

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

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

واجهات برمجة تطبيقات المجموعات الموثوقة هي تطور لواجهات برمجة تطبيقات المجموعات المتزامنة (الموجودة في مساحة اسم System.Collections.Concurrent):

  • غير متزامنة: تقوم بإرجاع مهمة نظراً لأن العمليات يتم نسخها واستمرارها على عكس المجموعات المتزامنة.
  • لا توجد معلمات خارجية: تستخدم ConditionalValue<T> لإرجاع bool وقيمة بدلاً من المعلمات الخارجية. ConditionalValue<T> يشبه Nullable<T> ولكنه لا يتطلب أن يكون T بنية.
  • العمليات: يستخدم عنصر عملية لتمكين المستخدم من تجميع الإجراءات على مجموعات موثوقة متعددة في عملية.

اليوم، تحتوي Microsoft.ServiceFabric.Data.Collections على ثلاث مجموعات:

  • قاموس موثوق: يمثل مجموعة منسوخة ومتصلة بالعمليات وغير متزامنة من أزواج المفاتيح/القيم. على غرار ConcurrentDictionary، يمكن أن يكون كل من المفتاح والقيمة من أي نوع.
  • قائمة انتظار موثوقة: تمثل قائمة انتظار صارمة تتبع أسلوب ما يرد أولاً يُصرف أولاً (FIFO) منسوخة ومتصلة بالعمليات وغير متزامنة. على غرار ConcurrentQueue، يمكن أن تكون القيمة من أي نوع.
  • قائمة انتظار متزامنة موثوقة: تمثل قائمة انتظار مرتبة بأفضل جهد منسوخة ومتصلة بالعمليات وغير متزامنة للحصول على معدل نقل عالي. على غرار ConcurrentQueue، يمكن أن تكون القيمة من أي نوع.

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