شبکه ذخیره سازی توزیع شده و غیرمتمرکز هیولا امکان ذخیره سازی و پردازش همزمان حجم بالایی از اطلاعات را بدون ایجاد یک گلوگاه واحد فراهم میکند. هیولا فضای ذخیرهسازی نرمافزارمحور برای دادههای غیرساختیافته و به عنوان جایگزینی برای فضاهای ذخیرهسازی مبتنی بر سختافزار، پیچیده و گرانقیمت میباشد. استفاده از الگوی طراحی پراکسی بصورت توزیع شده و غیرمتمرکز امکان مقیاسپذیری خطی را در ذخیره و بازیابی اطلاعات بر اساس نیازمندیهای مختلف از نظر سطوح دسترسی، نوع دسترسی، نوع پردازش و غیره فراهم میکند. تمام نودهای پراکسی به یک تابع مشترک ثابت برای آدرسیدهی فایلها دسترسی دارند که قدرت تحمل خطای شبکه را از نظر تعداد نقاط دسترسی به میزان دلخواه قابل مدیریت می کند.
نمایی از معماری مرجع سیستم فایل هیولا در زیر ارائه شده است که مشتمل بر لایه های مختلف ارائه سرویس ذخیره سازی (اصلی، جانبی و میان افزارها)، اجزای سامانه نظارتی هیولای ۳۶۰(مشتمل بر نظارت بر عملکرد های سامانه و کارایی سامانه) و اجزای فوق ناظر هیولا (مشتمل بر سرویس های پشتیبانی از عملیات توسعه، کنترل کیفیت، نصب و استقرار) و اجزای مختلف لایه دسترسی می باشد.
معرفی هیولا
در سامانه هیولا، سرویسهای توزیع شده و غیرمتمرکز برای مدیریت نرخ تکرار که بر روی هر یک از نودهای شبکه بصورت مستقل نصب میشوند، امکان دسترسپذیری بالا و پایداری دادهها را در سطح شبکه بین نواحی دسترسی مختلف افزایش میدهند. این سامانه محدودیت سیستمفایلهای توزیع شده دیگر نظیر هدوپ که تنها برای اشیاء با سایز بزرگ مناسب هستند را ندارد و طراحی آن بگونهای است که امکان پردازش فایلها را در هر اندازهای دارد. سلسله مراتب ذخیرهسازی در هیولا از نظر منطقی شامل پارتیشن، دیسک، سرور، بخش و ناحیه میباشد. تقسیم بندی هر دیسک بصورت منطقی به پارتیشنهای مختلف امکان کنترل و مدیریت ریزدانه اشیاء را بر روی هر دیسک فراهم میکند. هر سرور ذخیرهسازی میتواند شامل چندین دیسک باشد و مجموعه چند سرور که با هم در یک رک قرار دارند یا به یک سوییچ واحد متصل هستند میتوانند یک خوشه یا بخش را تشکل دهند. همچنین خوشهها میتوانند در سایتها و نواحی جغرافیایی مختلف توزیع شده باشند.
مدل دادهای
دادههایی که توسط سامانه هیولا نگهداری میشوند، مطابق شکل ۲ به سه دسته ذیل تقسیم میشوند که با هم رابطه سلسله مراتبی دارند.
- شیء[۱] : واحد اصلی ذخیره اطلاعات است. یک شیء میتواند یک فایل یا یک شبه پوشه[۲] باشد. شبه پوشه میتواند خود شامل فایل یا شبه پوشههای دیگر باشد. هر شیء میتواند دارای تعداد دلخواهی فراداده تعریف شده توسط کاربر به شکلkey=value باشد. فرادادهها برای توضیح محتوای اشیا، دستهبندی و جستجو در میان آنها بسیار مفید هستند.
- کیسه[۳]: واحد دستهبندی اشیا است. در واقع پایگاه دادهای شامل اطلاعات اشیاء داخل آن و برخی اطلاعات دیگر است. سیاستهای ذخیرهسازی کیسههای مختلف میتواند متفاوت باشد. به عنوان مثال ممکن است اشیاء درون یک کیسه دارای ۳ تکرار در خوشه و اشیاء کیسه دیگر دارای ۲ تکرار باشند. در حالت اول حجم بیشتری مصرف میشود، اما احتمال از بین رفتن داده یا از دسترس خارج شدن آن بسیار کمتر از حالت دوم است.
- حساب[۴]: واحد دستهبندی کیسهها است که پایگاه دادهای شامل اطلاعات کیسهها و برخی اطلاعات دیگر میباشد. هر حساب میتواند شامل تعدادی کاربر باشد. سطح دسترسی کاربران سامانه به حسابهای مختلف نیز قابل کنترل است.
مدل دادهای در هیولا مشتمل بر حساب، کیسه و شیء
قابلیت اطمینان و تحمل پذیری در برابر خطا
به منظور افزایش تحملپذیری در برابر خطا، اشیای موجود در هر پارتیشن به تعداد دلخواه قابل تکثیر در شبکه هستند که متناسب با سیاستهای تعریف شده به ازای هر بهرهبردار قابل تنظیم است. با توجه به بنچمارکهای انجام شده، معمولا در سیاست ذخیرهسازی با سطح سرویس طلایی تعداد تکرار ۳ و در سیاست ذخیرهسازی با سطح سرویس نقره ای تعداد تکرار ۲ پیشنهاد میشود. با استفاده از تابع هش، محتوای بین پارتیشن ها مقایسه میشود و در صورت وجود هرگونه مغایرت، عملیات همسانسازی انجام می شود. به منظور افزایش حداکثر میزان دسترس پذیری داده ها، تکرارها بصورتی انجام می شود که حداقل یک تکرار در یک نود دیگر در همان ناحیه دسترسی و تکرار بعدی در یک نود دیگر در یک ناحیه دسترسی دیگر و در صورت نیاز یک تکرار در یک منطقه دیگر قرار بگیرد.
مدل مفهومی مدیریت تکرار اشیا در شبکه
مدل بازیابی اطلاعات
بازیابی اطلاعات از طریق نودهای مینیون (یا پراکسی) انجام میشود. پراکسی یک پیادهسازی پایه برای مینیون است که در آن پس از انجام عملیات احراز هویت و اعتبارسنجی، با بررسی مجوزهای مربوط به هر درخواست با سطح ریزدانگی تعریف شده در هر پراکسی امکان دسترسی به منبع برای خواندن (و یا نوشتن) فراهم میشود. مینیونها برای پیدا کردن آدرس اشیا تنها به اجرای تابع هش نیاز دارند که به راحتی و با مرتبه پیچیدگی O(1) به ازای هر تعداد از اشیاء انبارش و پردازش آنها انجام میشود و بصورت خطی و افقی مقیاس پذیر است.
مدل مفهومی بازیابی اطلاعات در هیولا
افزایش ظرفیت شبکه
افزایش ظرفیت شبکه به معنای افزودن نود جدید (مشتمل بر دیسک یا سرور یا خوشه یا مرکز داده) به شبکه است که لازم است در طی این عملیات نودهای جدید به تابع هش اضافه شود. بدین منظور پس از نصب سرویسهای مورد نیاز روی روی نودهای جدید، میتوان نودهای جدید را در قالب نواحی و مناطق جدید به تابع هش معرفی کرد و تابع جدید را در شبکه هیولا توزیع کرد تا در اختیار همه نودهای ذخیره سازی و مینیون ها قرار بگیرد. معرفی نودهای جدید به تابع هش به معنای این است که بخشی از فضای آدرس دهی برای نگاشت اشیاء به پارتیشین های جدید اختصاص داده خواهد شد و برای توازن بار، تعدادی از اشیا با سیاست حداقل جابجایی، از نودهای قدیمی به نودهای جدید منتقل خواهند شد.
مدل مفهومی افزایش ظرفیت شبکه
بهینه سازی منابع سیستم عامل
در هیولا بهینه سازی منابع سیستم عامل در سطوح مختلف سیستم فایل، شبکه، پردازنده و حافظه جهت استفاده از حداکثر ظرفیت منابع در بارکاری بالا انجام شده است و از معماری میکروسرویس جهت مدیریت استقرار و مقیاس پذیری سامانه بدون وقفه استفاده شده است. برای مثال چند مشکل بنیادی در ارتباط با سیستم فایل محلی هر نود وجود دارد که یکی از آنها قطعهقطعه شدن فضای دیسک در نتیجه نوشتن و حذف مکرر فایلها و دیگری کاهش کارآیی در تعداد فایل بالا میباشد. طبق بررسیهای انجام شده موارد قابل پیکربندی متعددی جهت بهینهسازی عملکرد سیستمفایل وجود دارد تا کارآیی و سلامت کل سیستم در طی زمان حفظ شود. این پیکربندیها در سیستمفایل هیولا جهت حفظ کارآیی هر دیسک تا چند ده میلیون شیء و در کل سامانه بصورت نامحدود انجام شده است.
معماری میکروسرویس
روند مدرنسازی توسعه و استقرار سرویسهای نرمافزاری به سمتی است که شرکتهای نرمافزاری بتوانند سرویسهای با مقیاسپذیری سریع[۱]، قابل نظارت[۲] و با دسترسپذیری بالا[۳] بر اساس الگوهای طراحی[۴] استاندارد و قابل حمل[۵] تولید کنند. ضرورت مدرنسازی معماری نرمافزار به همراه سازگاری با سکوها و زیرساختهای مورد نیاز آن به این دلیل است که شرکتهای پیشرو در حوزه توسعه نرمافزار و ارایه خدمات رایانشی در مرکزداده در چند سال اخیر به این سمت حرکت کردهاند و تجربیات موفق حاصل از آن بصورت گسترده به اشتراک گذاشته شده است. پیشبینی میشود تا سال ۲۰۲۲ حدود ۹۰ درصد برنامههای کاربردی با معماری میکروسرویس توسعه داده شده باشند که سبب افزایش چابکی در طراحی، خطایابی، به روزرسانی، استقرار و نگهداری آنها میشود. در ادامه به مجموعهای از تحولاتی که در این مسیر در حال وقوع است اشاره شده است.
در گذشته، برنامهها بگونهای ساخته می شدند که بتوانند با مقیاسپذیری عمودی (افزایش منابع یک سیستم)، از عهده بارکاری[۶] بیشتری بر بیایند. این مقیاسپذیری با افزودن پردازندهها و حافظه بیشتر در سرورها برای مدیریت حجم بیشتر ترافیک، گسترش پایگاهداده برای افزایش بازدهی، اجرای کارهای سنگین در ابررایانهها و… انجام می شد. امروزه با پیشرفت فناوری بجای اینکه از برنامهها انتظار داشته باشیم که روی سرورهای با مقیاسپذیری عمودی بالا اجرا شوند، برنامه نویسان میتوانند ساختار برنامهها را تغییر دهند بطوریکه بتوانند بصورت افقی در مجموعهای از سرورها اجرا شوند. این تغییر ساختار برنامه همیشه آسان نیست، تغییر ساختار چه در برنامه انجام شود و چه در داده انجام شود، باید بگونهای باشد که داده یا پردازش بتوانند به بخشهای کوچکتر شکسته شوند. این روند معماری، کلید اصلی پیش برنده در پذیرش رايانش ابری بوده است. در رایانش ابری انتظار داریم معماری سرویس و برنامه های کاربردی به گونه ای باشد که بتوانند بصورت مقیاس پذی و پایدار، با حداکثر دسترسپذیری اجرا شود و قابلیت نظارتوکنترل بر روی شاخصهای وضعیتی و عملکردی وجود داشته باشد.