سحابة تخزين الكائن: OpenStack Swift وCeph Object Gateway

مكتمل

OpenStack Swift هي خدمة تخزين كائن يكون جزءًا من منصة OpenStack السحابية. تقدم Swift للعملاء واجهة HTTP مستندة إلى REST للتفاعل مع الكائنات الثنائية، مثل تخزين Azure Blob. Swift مجاني ومفتوح المصدر، ومتاح لأي شخص للتثبيت وللتكوين على أي جهاز، وتوفير تخزين الكائن على حد سواء على كل من السحب العامة والخاصة.

نموذج بيانات Swift ووحدات برمجة التطبيقات

نموذج بيانات Swift.

الشكل 11: نموذج بيانات Swift

في Swift، يمكن للمستخدمين الوصول إلى حساب، والذي يمكن استخدامه لتعريف الحاويات، والتي يمكن استخدامها لتخزين الكائنات. على سبيل المثال، افترض أن مستخدما لديه حساب 123456 على الخدمة السريعة التي تعمل على swift.mycloud.com، يخزن الكائن المسمى picture.jpg في الحاوية images. المسار الكامل للوصول إلى كائن في هذا المثال ومن ثم:

https://swift.mycloud.com/v1/123456/images/picture.jpg

نظرا لأن Swift يستخدم واجهة RESTful، فإنه يستخدم أفعال الوصول إلى HTTP القياسية مثل GET وPUT وPOST. بمجرد أن يتم نمذجة واجهة برمجة تطبيقات SWIFT على واجهة برمجة التطبيقات S3، فإن آلية واجهة برمجة التطبيقات والعمليات الداعمة متشابهة. الأوامر عديمة الحالة والحساسة للسياق الذي يتم تطبيقها فيه. يسرد أمر GET على حاوية كافة الكائنات المخزنة في تلك الحاوية، بينما يقوم أمر GET على كائن باسترداد هذا الكائن. تتوفر قائمة كاملة بعمليات Swift في مرجع واجهة برمجة التطبيقات (Swift API). يجب ملاحظة أن S3 وSWIFT غير متوافقين مع واجهة برمجة التطبيقات بنسبة 100٪. على سبيل المثال، لا يتم نسخ أوامر واجهة برمجة التطبيقات S3 المتعلقة بـالفواتير ومناطق AWS بسرعة.

وتجدر الإشارة إلى أن Swift تدعم أيضًا الوصول الموثق للمستخدمين الذين يحاولون الوصول إلى الخدمة (كنفاذ عام غير مصادق من خدمة Swift). تتكامل Swift مع خدمة المصادقة الخاصة بـ OpenStack، ويُطلق عليها Keystone.

بنية Swift

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

المكونات المختلفة لبنية Swift هي كما يلي:

تصميم نظام مجموعة Swift.

الشكل 12: بنية نظام مجموعة Swift

عقد الوكيل: هذه هي خوادم الواجهة الأمامية التي تعالج طلبات واجهة برمجة التطبيقات الواردة. يمكن أن تشمل كتلة Swift خوادم وكيل متعددة للتعامل مع الأحمال الأكبر من الأوامر الواردة. يحدد خادم الوكيل انتقال البيانات من الخادم لإرسال الأمر إليه. تُنسق خوادم الوكيل أيضًا الاستجابات ومعالجة حالات الفشل.

عقد الكائن: هذه هي أجهزة تخزين الكائنات الفعلية التي يمكنها تخزين الكائنات أو استردادها.

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

تعيين موضع البيانات في Swift

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

القسم: يستخدم Swift التجزئة المتناسقة لتحديد عقد الكائن في المنطقة التي يجب تخزين الكائنات. كل جزء من حلقة التجزئة المتناسقة يُعرف بالتقسيم.

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

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

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

نموذج التناسق في Swift

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

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

بوابة كائن Ceph

لإنهاء مناقشتنا حول تخزين الكائنات السحابية، يجب أن نتحدث Ceph Object Gateway، والمعروف أيضًا باسم RADOSGW. RADOSGW هي طبقة إضافية على كتلة التخزين Ceph، الذي يوفر واجهة RESTful HTTP للتفاعل مع الكائنات المخزنة على RADOS. وتُعد بوابة تخزين الكائنات Ceph فريدة من نوعها في قدرتها على دعم كلٍّ من واجهتي برمجة التطبيقات Amazon S3 وSWIFT، للسماح بترحيل التطبيقات إلى هذا النظام الأساسي. يقوم RADOSGW بنسخ نماذج البيانات المستخدمة في Amazon S3 وSWIFT كما توفر وظائف مماثلة لكل من هذه الخدمات.