⭕️ با عرض سلام، ادب و احترام. امشب با Part-25 از آموزش دوره تخصصی COA در خدمت شما بزرگواران هستیم و بحث بر روی کامپوننت Swift را آغاز خواهیم کرد. با ما همراه باشید.
پیش از شرح مؤلفههای Swift، مختصری مفاهیم اولیه ارائه میشوند:
شیء یا Object چیست؟
این یک مفهوم پایه در این سرویس است، چون این سرویس در واقع مدیریت شیء انجام میدهد. یک شیء یا Object در واقع یک مؤلفه دربردارنده داده است اما برخلاف فایل، Objectها در یک ساختار سلسله مراتبی سازماندهی نمیشوند. همه Objectهای در یک سطح مشابه و در یک فضای آدرس یکنواخت که استخر ذخیره نامیده میشود قرار دارند. در این ساختار یک Object نمیتواند در Object دیگری قرار بگیرد.
فایلها و Objectها در کنار دادههایشان دارای metadataهایی هستند، اماObject ها دارای metadataهای توسعه داده شدهای هستند. هر Object به یک شناسه منحصر به فردی انتساب داده میشود که امکان دسترسی سرور و کاربر به Object را بدون نیاز به اطلاع از مکان فیزیکی ذخیرهسازی فراهم میکند. این روش برای خودکار کردن و ساده کردن ذخیرهسازی دادهها در محیط رایانش ابری مفید است.
ذخیرهسازی مبتنی بر Object اغلب با متصدی پارکینگ در یک رستوران خیلی بزرگ مقایسه میشود. در این ساختار مشتری کلید ماشین خود را به متصدی پارکینگ میدهد و یک رسید دریافت میکند. در این حالت مشتری اطلاعی از محل پارک ماشین ندارد و حتی این امکان وجود دارد که محل ماشین چندین بار تغییر کند. با این وجود هر زمان که مشتری به پارکینگ برگردد، با دادن رسید ماشین به او تحویل داده میشود. در ساختار ذخیرهسازی مبتنی برObject ، شناسه منحصر به فرد Object نقش رسید را ایفا میکند.
بطور منطقی Swift دارای سه سطح است که شامل: accountها، containerها و objectهاست. شما میتوانید accountها را بصورت یک فایل سیستم تصور کنید که container به عنوان یک دایرکتوری و object به عنوان یک فایل درون آن هستند. شما میتوانید هر object را توسط مسیر آن بصورت /account_name/container_name/object_name مشخص نمایید.
شیء یا Object چیست؟
این یک مفهوم پایه در این سرویس است، چون این سرویس در واقع مدیریت شیء انجام میدهد. یک شیء یا Object در واقع یک مؤلفه دربردارنده داده است اما برخلاف فایل، Objectها در یک ساختار سلسله مراتبی سازماندهی نمیشوند. همه Objectهای در یک سطح مشابه و در یک فضای آدرس یکنواخت که استخر ذخیره نامیده میشود قرار دارند. در این ساختار یک Object نمیتواند در Object دیگری قرار بگیرد.
فایلها و Objectها در کنار دادههایشان دارای metadataهایی هستند، اماObject ها دارای metadataهای توسعه داده شدهای هستند. هر Object به یک شناسه منحصر به فردی انتساب داده میشود که امکان دسترسی سرور و کاربر به Object را بدون نیاز به اطلاع از مکان فیزیکی ذخیرهسازی فراهم میکند. این روش برای خودکار کردن و ساده کردن ذخیرهسازی دادهها در محیط رایانش ابری مفید است.
ذخیرهسازی مبتنی بر Object اغلب با متصدی پارکینگ در یک رستوران خیلی بزرگ مقایسه میشود. در این ساختار مشتری کلید ماشین خود را به متصدی پارکینگ میدهد و یک رسید دریافت میکند. در این حالت مشتری اطلاعی از محل پارک ماشین ندارد و حتی این امکان وجود دارد که محل ماشین چندین بار تغییر کند. با این وجود هر زمان که مشتری به پارکینگ برگردد، با دادن رسید ماشین به او تحویل داده میشود. در ساختار ذخیرهسازی مبتنی برObject ، شناسه منحصر به فرد Object نقش رسید را ایفا میکند.
بطور منطقی Swift دارای سه سطح است که شامل: accountها، containerها و objectهاست. شما میتوانید accountها را بصورت یک فایل سیستم تصور کنید که container به عنوان یک دایرکتوری و object به عنوان یک فایل درون آن هستند. شما میتوانید هر object را توسط مسیر آن بصورت /account_name/container_name/object_name مشخص نمایید.
ویژگیهای سرویس Swift
• پروکسی سرور درخواستهای ورودی مانند آپلود فایل، تغییر در metadataها یا ساختن یک Container را میپذیرد. همچنین لیست فایلها و Containerها را ارائه میدهد.
• سرور حسابها مدیریت حسابهای تعریف شده توسط سرویس ذخیرهسازی مبتنی بر شیء را برعهده دارد.
• سرورهایContainer ، نقشه Containerها و پوشهها را در سرویس مبتنی بر شیء را برعهده دارد.
• سرورهایObject ، Objectهای واقعی و فایلها را درnode های ذخیرهسازی مدیریت میکنند.
• سرویسهای تکثیر برای فراهم کردن استحکام و دردسر بودن دادهها در میان کلاستر، حسابرسی و بروزرسانی در حال فعالیت هستند.
• پروکسی سرور درخواستهای ورودی مانند آپلود فایل، تغییر در metadataها یا ساختن یک Container را میپذیرد. همچنین لیست فایلها و Containerها را ارائه میدهد.
• سرور حسابها مدیریت حسابهای تعریف شده توسط سرویس ذخیرهسازی مبتنی بر شیء را برعهده دارد.
• سرورهایContainer ، نقشه Containerها و پوشهها را در سرویس مبتنی بر شیء را برعهده دارد.
• سرورهایObject ، Objectهای واقعی و فایلها را درnode های ذخیرهسازی مدیریت میکنند.
• سرویسهای تکثیر برای فراهم کردن استحکام و دردسر بودن دادهها در میان کلاستر، حسابرسی و بروزرسانی در حال فعالیت هستند.
ويژگیهای سرویس Swift در مقابل روش سنتی ذخیرهسازی اشیاء در برنامههای کاربردی
سرویس ذخیرهسازی اشیاء بر روی زیرساخت ابری OpenStack، شامل قابلیتهای زیر است:
• دسترسی به فایلهای ذخیرهشده از طریق اینترنت و توسط هر نوع دستگاه سختافزاری (موبایل، تبلت، لپتاپ و کامپیوتر شخصی)
• انجام عملیات ذخیرهسازی و بازیابی فایلها و اشیاء تماماً توسط چارچوب REST
• عدم از دست رفتن اطلاعات به دلیل استفاده از مکانیزمهای ذخیرهسازی مطمئن و قابلیتهای بازیابی
• قابلیت ذخیرهسازی و بازیابی اشیاء بزرگ (با حجم نامحدود)
• قابلیت تعریف تاریخ انقضاء برای اشیاء
• قابلیت انجام عملیات (حذف و یا بروزرسانی) بر روی اشیاء تا تعداد 10,000 عدد شیء در هر درخواست
• قابلیت فشردهسازی اطلاعات
• خارجسازی خودکار اطلاعات از حالت فشرده
• تولید آدرس URL برای اشتراکگذاری شیء، با قابلیت دسترسی در زمان محدود. (لینک مربوطه بعد مدت زمان مشخصی از بین میرود.)
• امکان بارگذاری اشیاء از طریق مرورگر
• دارای واسط کاربری و مدیریتی برای مدیریت و به اشتراکگذاری اشیاء
• پیادهسازی مکانیزم آرشیو فایلهای حذف شده (Recycle Bin) و امکان بازیابی اشیاء
• امکان ذخیره انواع مختلف فایلها و اشیاء بزرگ (pdf، image، document و...)
• امکان ذخیرهسازی metadata دلخواه به ازای هر شیء بارگذاری شده، برای اهداف شاخصگذاری و جستوجو سریع
• امکان ذخیرهسازی تعداد نامحدود اشیاء هر یک با حجم نامحدود
• امکان ذخیره نسخههای (Versioning) مختلف یک شیء در سطح دایرکتوری
• امکان در اختیار داشتن تعداد نامحدود دایرکتوری در یک حساب کاربری
• قابلیت تعریف شاخهها و دایرکتوریها بصورت درخت و پشتیبانی کامل از ذخیرهسازی اشیاء در ساختار سلسلهمراتبی
• امکان حذف و بازیابی اشیاء به تفکیک نسخههای موجود
• امکان بازیابی فایلهایی که ناخواسته (بنا بر اشتباه انسانی و یا بوسیله حملات سایبری) حذف شدهاند.
سرویس ذخیرهسازی اشیاء بر روی زیرساخت ابری OpenStack، شامل قابلیتهای زیر است:
• دسترسی به فایلهای ذخیرهشده از طریق اینترنت و توسط هر نوع دستگاه سختافزاری (موبایل، تبلت، لپتاپ و کامپیوتر شخصی)
• انجام عملیات ذخیرهسازی و بازیابی فایلها و اشیاء تماماً توسط چارچوب REST
• عدم از دست رفتن اطلاعات به دلیل استفاده از مکانیزمهای ذخیرهسازی مطمئن و قابلیتهای بازیابی
• قابلیت ذخیرهسازی و بازیابی اشیاء بزرگ (با حجم نامحدود)
• قابلیت تعریف تاریخ انقضاء برای اشیاء
• قابلیت انجام عملیات (حذف و یا بروزرسانی) بر روی اشیاء تا تعداد 10,000 عدد شیء در هر درخواست
• قابلیت فشردهسازی اطلاعات
• خارجسازی خودکار اطلاعات از حالت فشرده
• تولید آدرس URL برای اشتراکگذاری شیء، با قابلیت دسترسی در زمان محدود. (لینک مربوطه بعد مدت زمان مشخصی از بین میرود.)
• امکان بارگذاری اشیاء از طریق مرورگر
• دارای واسط کاربری و مدیریتی برای مدیریت و به اشتراکگذاری اشیاء
• پیادهسازی مکانیزم آرشیو فایلهای حذف شده (Recycle Bin) و امکان بازیابی اشیاء
• امکان ذخیره انواع مختلف فایلها و اشیاء بزرگ (pdf، image، document و...)
• امکان ذخیرهسازی metadata دلخواه به ازای هر شیء بارگذاری شده، برای اهداف شاخصگذاری و جستوجو سریع
• امکان ذخیرهسازی تعداد نامحدود اشیاء هر یک با حجم نامحدود
• امکان ذخیره نسخههای (Versioning) مختلف یک شیء در سطح دایرکتوری
• امکان در اختیار داشتن تعداد نامحدود دایرکتوری در یک حساب کاربری
• قابلیت تعریف شاخهها و دایرکتوریها بصورت درخت و پشتیبانی کامل از ذخیرهسازی اشیاء در ساختار سلسلهمراتبی
• امکان حذف و بازیابی اشیاء به تفکیک نسخههای موجود
• امکان بازیابی فایلهایی که ناخواسته (بنا بر اشتباه انسانی و یا بوسیله حملات سایبری) حذف شدهاند.
معماری پیادهسازی ابری خدمات ذخیرهسازی اشیاء
برای پیادهسازی زیرساخت ارائه خدمات ابری ذخیرهسازی اشیاء معماریهای مشخصی وجود دارد که کاملاً وابسته به محیط پیادهسازی (زیرساخت موجود) و همچنین نیازهای مربوط به پروژه و کارفرما میباشد. در این بخش، برخی از معماریهای پیادهسازی زیرساخت ابری ذخیرهسازی اشیاء بطور خلاصه بررسی شده است.
معماری سطحبالای زیرساخت ابری ذخیرهسازی اشیاء
برای پیادهسازی خدمات ابری ذخیرهسازی اشیاء، اجزای متعددی برای اعداف مشخص از جمله احراز هویت متمرکز کاربران، توزیع بار درخواستهای ذخیرهسازی اشیاء و همچنین بخش مدیریت نحوه ذخیرهسازی اشیاء وجود دارد که هر یک توسط یکی از پروژههای متنباز قابل پیادهسازی میباشد. شکل 3-15 معماری سطح بالای زیرساخت ابری را نمایش میدهد که سرویس ذخیرهسازی اشیاء به عنوان یک سرویس داخلی (توسط زیرسیستمهای داخلی ابر برای ذخیرهسازی اطلاعات مربوط به زیرساخت ابر) و همچنین به عنوان یک سرویس عمومی (سرویس ذخیرهسازی اشیاء به کاربران) ارائه شده است.
برای پیادهسازی زیرساخت ارائه خدمات ابری ذخیرهسازی اشیاء معماریهای مشخصی وجود دارد که کاملاً وابسته به محیط پیادهسازی (زیرساخت موجود) و همچنین نیازهای مربوط به پروژه و کارفرما میباشد. در این بخش، برخی از معماریهای پیادهسازی زیرساخت ابری ذخیرهسازی اشیاء بطور خلاصه بررسی شده است.
معماری سطحبالای زیرساخت ابری ذخیرهسازی اشیاء
برای پیادهسازی خدمات ابری ذخیرهسازی اشیاء، اجزای متعددی برای اعداف مشخص از جمله احراز هویت متمرکز کاربران، توزیع بار درخواستهای ذخیرهسازی اشیاء و همچنین بخش مدیریت نحوه ذخیرهسازی اشیاء وجود دارد که هر یک توسط یکی از پروژههای متنباز قابل پیادهسازی میباشد. شکل 3-15 معماری سطح بالای زیرساخت ابری را نمایش میدهد که سرویس ذخیرهسازی اشیاء به عنوان یک سرویس داخلی (توسط زیرسیستمهای داخلی ابر برای ذخیرهسازی اطلاعات مربوط به زیرساخت ابر) و همچنین به عنوان یک سرویس عمومی (سرویس ذخیرهسازی اشیاء به کاربران) ارائه شده است.
معماری پیادهسازی در یک مرکزداده
در صورت پیادهسازی زیرساخت ابری ذخیرهسازی اشیاء بر روی تنهای یک مرکزداده، گرههای ذخیرهسازی اشیاء به کلاسترهای مختلف با سطح کیفیت متفاوت دستهبندی شده و اطلاعات و اشیاء بزرگ توسط الگورتیمهای پیشرفته شکستهسازی اشیاء، بر روی کلاسترهای موجود بصورت توزیع شده ذخیره میشوند. شکل زیر معماری سطح بالای Single Region را نمایش میدهد که در آن زیرساخت ابری ذخیرهسازی اشیاء تنها بر روی یک مرکزداده پیادهسازی میشود.
در صورت پیادهسازی زیرساخت ابری ذخیرهسازی اشیاء بر روی تنهای یک مرکزداده، گرههای ذخیرهسازی اشیاء به کلاسترهای مختلف با سطح کیفیت متفاوت دستهبندی شده و اطلاعات و اشیاء بزرگ توسط الگورتیمهای پیشرفته شکستهسازی اشیاء، بر روی کلاسترهای موجود بصورت توزیع شده ذخیره میشوند. شکل زیر معماری سطح بالای Single Region را نمایش میدهد که در آن زیرساخت ابری ذخیرهسازی اشیاء تنها بر روی یک مرکزداده پیادهسازی میشود.
معماری پیادهسازی توزیعشده و ارائه خدمات در چندین مرکزداده در سراسر یک کشور
در صورت وجود مراکز داده متعدد در نقاط مختلف کشور، معماری پیادهسازی زیرساخت ابری ذخیرهسازی اشیاء، بصورت توزیع شده و اصطلاحاً Multi Region میباشد. در این معماری هر یک از مراکز داده میتوانند نقشهای زیر را برای ارائه خدمات ایفا کنند:
• Offsite Backup
• Active Storage Cluster
در حالت اول که در شکل 5-15 نیز نمایش داده شده است، مرکز داده ثانویهای برای ذخیره یک نسخه از اطلاعات مورد استفاده قرار گرفته تا در زمان بروز مشکل در بازیابی اطلاعات بتوان اطلاعات از دست رفته را از مرکز داده دیگر استخراج کرد. این نوع معماری پیادهسازی برای ذخیرهسازی اطلاعات حساس به کار رفته و بسته به نیازهای کاربران در محیط پیاده سازی میتواند مورد استفاده قرار گیرد.
در صورت وجود مراکز داده متعدد در نقاط مختلف کشور، معماری پیادهسازی زیرساخت ابری ذخیرهسازی اشیاء، بصورت توزیع شده و اصطلاحاً Multi Region میباشد. در این معماری هر یک از مراکز داده میتوانند نقشهای زیر را برای ارائه خدمات ایفا کنند:
• Offsite Backup
• Active Storage Cluster
در حالت اول که در شکل 5-15 نیز نمایش داده شده است، مرکز داده ثانویهای برای ذخیره یک نسخه از اطلاعات مورد استفاده قرار گرفته تا در زمان بروز مشکل در بازیابی اطلاعات بتوان اطلاعات از دست رفته را از مرکز داده دیگر استخراج کرد. این نوع معماری پیادهسازی برای ذخیرهسازی اطلاعات حساس به کار رفته و بسته به نیازهای کاربران در محیط پیاده سازی میتواند مورد استفاده قرار گیرد.
در صورتیکه مرکز داده ثانویه به عنوان مرکزداده فعال پیکربرندی شده باشد، در زیرساخت ذخیرهسازی اشیاء گرههای این مرکز داده نیز به عنوان منابع ذخیرهسازی اشیاء مورد استفاده قرار گرفته و ظرفیت ذخیرهسازی اطلاعات را افزایش میدهد. شکل 6-15 دو حالت مختلف را برای پیادهسازی معماری Multi Region را نمایش میدهد.
ويژگیهای برجسته خدمات ابری ذخیرهسازی اشیاء OpenStack
• قابلیت اطمینان بسیار بالا در ذخیرهسازی اطلاعات و عدم از دست رفتن اطلاعات (Zero Data Lost)
برای جلوگیری از بین رفتن اطلاعات در صورت بروز مشکل (و یا اشتباهات سهوی کاربران)، نسخههای مختلفی از اطلاعات و اشیاء بر روی گرههای متعددی ذخیره شده که در این حالت قابلیت بازیابی اشیاء به سادگی قابل انجام میباشد. علاوه بر قابلیت نگهداشتن چندین نسخه از اطلاعات در چندین گره مختلف، اشیاء بزرگ به تکههای کوچکتری تقسیم شده که هر یک از این قطعات نیز خود بر روی گرههای مختلف تکرار میشوند. در این حالت سرعت بازیابی اطلاعات نیز افزایش خواهد یافت (شکل 7-15).
• قابلیت اطمینان بسیار بالا در ذخیرهسازی اطلاعات و عدم از دست رفتن اطلاعات (Zero Data Lost)
برای جلوگیری از بین رفتن اطلاعات در صورت بروز مشکل (و یا اشتباهات سهوی کاربران)، نسخههای مختلفی از اطلاعات و اشیاء بر روی گرههای متعددی ذخیره شده که در این حالت قابلیت بازیابی اشیاء به سادگی قابل انجام میباشد. علاوه بر قابلیت نگهداشتن چندین نسخه از اطلاعات در چندین گره مختلف، اشیاء بزرگ به تکههای کوچکتری تقسیم شده که هر یک از این قطعات نیز خود بر روی گرههای مختلف تکرار میشوند. در این حالت سرعت بازیابی اطلاعات نیز افزایش خواهد یافت (شکل 7-15).
• ذخیرهسازی و بازیابی بسیار سریع اطلاعات بر روی ابر (Fast Data Store)
یکی از مهمترین قابلیتهای ذخیرهسازی ابری اشیاء، سرعت بالای دسترسی به اشیاء است. همانطور که در شکل 8-15نشان داده شده است با استفاده از تنظیمات موجود میتوان اطلاعات را به تکههای کوچکتر تقسیم کرده و در زمان بازیابی با سرعت بسیار بالا اشیاء را در اختیار کاربران قرار داد. یکی از مهمترین ويژگیها دستهبندی سطح کیفیت خدمات است که با استفاده از لایهبندی بر اساس سرعت منابع سختافزاری ذخیرهسازی اطلاعات، میتوان کیفیت ارائه خدمات را تعیین کرد.
یکی از مهمترین قابلیتهای ذخیرهسازی ابری اشیاء، سرعت بالای دسترسی به اشیاء است. همانطور که در شکل 8-15نشان داده شده است با استفاده از تنظیمات موجود میتوان اطلاعات را به تکههای کوچکتر تقسیم کرده و در زمان بازیابی با سرعت بسیار بالا اشیاء را در اختیار کاربران قرار داد. یکی از مهمترین ويژگیها دستهبندی سطح کیفیت خدمات است که با استفاده از لایهبندی بر اساس سرعت منابع سختافزاری ذخیرهسازی اطلاعات، میتوان کیفیت ارائه خدمات را تعیین کرد.
در دسترسپذیری بالای سرویس (Zero Downtime)
در دسترس پذیری در ارائه خدمات، یکی از مهمترین ويژگیهای ارائه خدمات ابری است. به دلیل Stateless بودن تمامی زیرسامانههای مربوط به زیرساخت ارائه خدمات ابری ذخیرهسازی اشیاء، تمامی زیر سرویسها با قابلیت در دسترسپذیری قابلیت پیکربندی داشته و با از دست رفتن یکی از زیر سامانهها، نمونه در حال اجرای دیگر از آن سرویس قابلیت پاسخگویی به درخواستها را خواهد داشت. شکل 9-15 این قابلیت را در زیرسامانههای ذخیرهسازی اشیاء را در سطح بالا نمایش میدهد.
در دسترس پذیری در ارائه خدمات، یکی از مهمترین ويژگیهای ارائه خدمات ابری است. به دلیل Stateless بودن تمامی زیرسامانههای مربوط به زیرساخت ارائه خدمات ابری ذخیرهسازی اشیاء، تمامی زیر سرویسها با قابلیت در دسترسپذیری قابلیت پیکربندی داشته و با از دست رفتن یکی از زیر سامانهها، نمونه در حال اجرای دیگر از آن سرویس قابلیت پاسخگویی به درخواستها را خواهد داشت. شکل 9-15 این قابلیت را در زیرسامانههای ذخیرهسازی اشیاء را در سطح بالا نمایش میدهد.