Grid Computing
هدف Grid Computing به اشتراک گذاری منابع در یک محیط پویا و احتمالاً ناهمگن است . این منابع با سیاستهای مختلف در دسترس هستند . این “به اشتراک گذاری” عمدتاً برای اهداف محاسباتی برای مقاصد علمی است اما در موارد اقتصادی نیز کاربرد دارد . این منابع می توانند منابع گوناگونی از جمله CPU ، هارد دیسک ، نرم افزار و سنسورها باشند .

در این گفتار مفاهیم ، مزیت ها و کاربردهای Grid را بررسی می کنیم ، یک معماری برای Grid معرفی می کنیم و مدل OGSA را بررسی می کنیم . یک مدل کلی برای برنامه نویسی تحت Grid بیان می کنیم و جزئیات این مدل را برای مسائل Back-track بررسی می کنیم و درخت خاکستری را معرفی می کنیم . در نهایت مسئله ی N – وزیر را در محیط Grid حل می کنیم و برای نشان دادن قدرت محاسبه ی موازی ، نتایج عمل ضرب ماتریس با استفاده از ده ماشین را بیان می کنیم .

واژه های کلیدی
Grid ، Grid Computing ، مجازی سازی ، سازمان مجازی ، مسائل NP ، درخت خاکستری ، N- وزیر، OGSA ، پردازش موازی ، ریزکار .

فهرست مطالب
عنوان صفحه
مقدمه………………………………………………………………………………………………………………………………………….
فصل یکم – Grid Computing چیست ؟……………………………………………………………………………..
فصل دوم – مزیت های Grid Computing …………………………………………………………………………
2-1- استفاده مؤثر از منابع…………………………………………………………………………………………………..
۲-۲- قابلیت محاسبه موازی…………………………………………………………………………………………………..
۲-۳- منابع مجازی و سازمان های مجازی …………………………………………………………………………….
۲-۴- دسترسی به منابع اضافه ………………………………………………………………………………………………….
۲-۵- متعادل سازی استفاده از منابع………………………………………………………………………………………
۲-۶- قابلیت اطمینان …………………………………………………………………………………………………………….
۲-۷- مدیریت ……………………………………………………………………………………………………………………………
فصل سوم- مفاهیم و معماری……………………………………………………………………………………………………………
۳-۱- سازمان های مجازی و Grid……………………………………………………………………………………………..
3-1-1- چالش های تکنیکی در به اشتراک گذاشتن ………………………………………………………………..
۳-۱-۲-سیر تکامل تکنولوژی Grid…………………………………………………………………………………………….
3-2- معماری Gri……………………………………………………………………………………………………………………….
3-2-1- Fabric : رابط هایی برای کنترل های محلی ……………………………………………………………
۳-۲-۲- Connectivity : برقراری ارتباط ساده و امن ………………………………………………………….
۳-۲-۳ Resource : به اشتراک گذاشتن یک منبع ……………………………………………………………
۳-۲-۴- Collective : هماهنگی چندین منبع ……………………………………………
۳-۲-۵- Application……………………………………………………………………………………………………….
3-3- پیاده سازی معماری Grid ……………………………………………………………………………………………
3-3-1-Globus Toolkit v2.0 ………………………………………………………………………………………
3-3-1-1- Fabric…………………………………………………………………………………………………………….
3-3-1-2- Connectivity………………………………………………………………………………………………
3-3-1-3- Resource……………………………………………………………………………………………………….
3-3-1-4- Collective……………………………………………………………………………………………………….
3-3-2- Open Grid Services Architecture ………………………………………………………
فصل چهارم – مدلی برای برنامه نویسی …………………………………………………………………………………..
۴-۱ تعریف محیط و هدف ……………………………………………………………………………………………………
۴-۲- المان ها ………………………………………………………………………………………………………………………..
۴-۲-۱- کار…………………………………………………………………………………………………………………………….
۴-۲-۲- قسمت کردن ……………………………………………………………………………………………………………
۴-۲-۳- ریزکار………………………………………………………………………………………………………………………..
۴-۲-۴- منبع محاسباتی……………………………………………………………………………………………………….
۴-۲-۵- زمانبند………………………………………………………………………………………………………………………..
۴-۲-۶- ذخیره کننده ……………………………………………………………………………………………………………
۴-۳- مدل برنامه نویسی ، به صورت شبه کد ………………………………………………………………………
۴-۳-۱ – طرف منابع محاسباتی ……………………………………………………………………………………………..
۴-۳-۲- طرف زمانبند …………………………………………………………………………………………………………….
۴-۳-۳- تقسیم کننده ………………………………………………………………………………………………………………
۴-۴- فلوچارت و کمی از جزئیات برنامه نویسی ……………………………………………………………………….
۴-۴-۱- فلوچارت طرف زمانبند …………………………………………………………………………………………………
۴-۴-۲- فلوچارت طرف منبع محاسباتی …………………………………………………………………………………
۴-۵- روشی برای تقسیم کردن در مسائل Back-track……………………………………………………..
4-5-1- ساختمان داده ی گره …………………………………………………………………………………………………
۴-۵-۲- درخت خاکستری ………………………………………………………………………………………………………
۴-۵-۳- قطع کردن درخت ……………………………………………………………………………………………………….
۴-۵-۴ زمانبندی ……………………………………………………………………………………………………………………..
۴-۵-۵- نکات تکمیلی …………………………………………………………………………………………………………..

فهرست شکلها
عنوان صفحه
شکل ۱-۱ – مراحل مجازی سازی…………………………………………………………………………………….
شکل ۲-۱- Grid منبع نامتجانس و از نظر جغرافیایی از هم جدا را مجازی سازی می کند
شکل ۲-۲- کارها به جاهایی که بار کمتری دارند برده می شوند ………………………………………
شکل ۲-۳- پیکر بندی Grid در مواقع بحرانی …………………………………………………………………
شکل ۲-۴- مدیران می توانند سیاست های خاصی را تنظیم کنند ……………………………………..
شکل ۳-۱- یک سازمان مجازی………………………………………………………………………………………………..
شکل ۳-۲- سیر تکامل تکنولوژی Grid…………………………………………………………………………………..
شکل ۳-۳- لایه های معماری Grid………………………………………………………………………………………
شکل ۳-۴- مثالی از مکانیزم Globus Toolkit……………………………………………………………………..
شکل ۴-۱-المان های سیستم ………………………………………………………………………………………………….
شکل ۴-۲- قسمت های مختلف سیستم ………………………………………………………………………………….
شکل ۴-۳ – قسمتی از فلوچارت طرف زمانبند………………………………………………………………………..
شکل ۴-۴- فلوچارت طرف زمانبند…………………………………………………………………………………………..
شکل ۴-۵- طرف منبع محاسباتی……………………………………………………………………………………………
شکل ۴-۶- درخت متقارن و منابع متقارن……………………………………………………………………………….
شکل ۴-۷- درخت متقارن و منابع نامتقارن……………………………………………………………………………..
شکل ۴-۸- درخت نامتقارن و منابع متقارن…………………………………………………………………………….
شکل ۴-۹- درخت نامتقارن و منابع نامتقارن…………………………………………………………………………..
شکل ۴-۱۰- مراحل زمانبندی …………………………………………………………………………………………………
شکل ۴-۱۱ مراحل زمانبندی………………………………………………………………………………………………………
مراجع و منابع……………………………………………………………….

مقدمه
واژه ی Grid Computing در اواخر دهه نود در مورد ایجاد قابلیت دسترسی ساده به منابع محاسباتی مانند آنچه در مورد انرژی الکتریسیته در شبکه برق وجود دارد توسط آقایانIan Foster وCarl Kesselman در کتاب “ The Grid : Blue print for new computing infrastructure ” مطرح شد . آنها در آن کتاب در مورد Grid این طور نوشتند :
” Grid محاسباتی یک زیر ساخت نرم افزاری و سخت افزاری است که قابلیت استفاده از تجهیزات محاسباتی را قابل اطمینان ، به صورت کم خرج ، فراگیر و سازگار فراهم می آورد .
در سال ۲۰۰۰ آنها با همکاری Steve Tuecke مقاله ای با عنوان “The anatomy of the grid” نوشتند و در آنجا هدف از Grid را اینگونه معرفی کردند :
” به اشتراک گذاری متوازن منابع برای حل مسئله در یک محیط پویا ، شامل یک سازمان مجازی تشکیل شده صنعت “
و بعد اضافه کردند که :
” به اشتراک گذاری منابع که ما از آن صحبت می کنیم ، مبادله ی فایل نیست . بلکه منظور ما دسترسی مستقیم به کامپیوترها ، نرم افزارها ، داده ها و دیگر منابع است . این به اشتراک گذاری تحت کنترل کامل صاحب منبع است . مجموعه ای از افراد و یا شرکت ها که این نوع به اشتراک گذاری را داشته باشند ، سازمان مجازی خوانده می شود “
بعداً آقای Foster در مقاله ی “ What is the grid ?”، Grid را سیستمی تعریف می کند
که سه ویژگی زیر را داشته باشد .
 مجموعه ای از منابع هماهنگ که دارای یک مدیریت مرکزی نیستند .
 از Interface ها و پروتکل های استاندارد ، باز و عام – منظوره بهره می برند .
 کیفیت سرویسی که کل سیستم ارائه می دهد بزرگتر از کیفیت سرویس هر کدام از منابع است .
تمام مفاهیم بالا در واقع Grid را از زاویه دید مختلفی بررسی می کنند ولی بصورت ساده هدف Grid به اشتراک گذاری منابع بصورت هماهنگ در یک محیط ( احتمالاً ) ناهمگن و پویا است .

فصل یکم : Grid Computing چیست ؟
Grid Computing می تواند معنی های مختلفی برای افراد مختلف داشته باشد . تصور مشهور در مورد Grid ، چیزی شبیه شبکه ی برق ( Power Grid ) است که کاربران ( استفاده کنندگان از وسایل برقی ) بدون توجه به اینکه این برق از کجا می آید ، الکتریسیته را از پریز می گیرند .
با این دید در مورد Grid Computing ، می توان ” Computing ” را به عنوان قدرت ( انرژی برق در نظر گرفت و کاربران ( یا برنامه ها ) به منابع محاسباتی ( پردازنده ها ، ذخیره کننده ها ، داده ها ، برنامه ها و غیره ) دسترسی پیدا می کند و اهمیتی ندارد که این منابع از نظر فیزیکی کجا قرار گرفته اند و یا تکنولوژی مورد استفاده در آنها ، سخت افزار و نرم افزار آنها چیست .

این دید از Grid Computing می تواند خلاقیت کسی را برانگیزد و در نهایت این ایده به حقیقت بپیوندد ولی در این راه مشکلات تکنیکی زیادی وجود دارد که باید حل شود . اگر این هدف به عنوان هدف نهایی در نظر گرفته شود ، مراحل کوچکتر زیادی باید طی شود و هر کدام از این مراحل مزیت های خود را دارند و تا اندازه ای ما را به هدف نزدیک می کنند .

پسGrid Computing را می توان مانند یک مسیر جذاب از تکنولوژی ها و راهکار های مختلف دید که طی کردن این مسیر ما را به هدف نهایی نزدیکتر می کند . قسمت مهم این پیشرفت در محاسبات توزیع شده است که امکان پیاده سازی برنامه ها در سیستمی که از سازمان های مختلف تشکیل شده است برای به اشتراک گذاشتن منابع را فراهم می آورد . به طور خلاصه امکان” مجازی سازی” را فراهم می آورد . مجازی سازی در زمینه تکنولوژی ، Platform ها و سازمانها . این مجازی سازی فقط با استـاندارد های بـاز امکان پذیر است . استـاندارد های بـاز کمک می کنند که مطمئن
برنامه ها می توانند بصورت شفاف سیستم حاوی منابع را ببینند . [kessel 2004] .

محیطی که می خواهد قابلیت استفاده از منابع بصورت شفاف در یک محیط توزیع شده و نامتجانس را فراهم کند ، نه فقط نیاز دارد که منابع را مجازی سازی کند ، بلکه تکنولوژی و استانداردهایی برای زمان بندی ، مدیریت ، امنیت و موارد دیگر نیاز دارد . Grid Computing می تواند در هر مرحله ای از مجازی سازی تعریف شود . اینکه مجازی سازی تا چه مرحله ای انجام شود ، به نظر استفاده کننده بستگی دارد ولی حتی در یک مرحله ی پایین مجازی سازی نیز می توان گفت که یک سیستم مبتنی بر Grid تولید شده است .

این مراحل در شکل ۱-۱ نشان داده شده است . از قسمت پایین سمت چپ ، مجازی سازی از ساختن چندین ماشین مجازی بر روی منحنی حرکت می کنیم به سیستم هایی شامل چند کامپیوتر متجانس و توزیع شده می رسیم . مجازی سازی فقط به سرورها و CPU ها محدود نمی شود . بلکه تا حافظه ها ، شبکه ها و یا حتب برنامه ها نیز گسترده می شود . وقتی بر روی منحنی حرکت را ادامه می دهیم به مجازی سازی بر روی منابع غیر مشابه می رسیم . مرحله ی بعد مجازی سازی شرکت ها ست ، نه فقط بر روی مراکز داده و دپارتمان ها ، بلکه بر روی سازمان های توزیع شده و بعد مجازی سازی در خارج از سازمان و در سطح اینترنت .

شکل ۱-۱- مراحل مجازی سازی
پیاده سازی های قبلی در زمینه Grid Computing به صورت داخل شرکتی وجود داشت ولی اکنون این پیاده سازی ها به سمت بیرونی شدن و در سطح چندین شرکت پیش می رود .
تفاوت Grid های درون شرکتی و Grid هایی که در سطح چندین شرکت وجود دارند مربوط به دامنه های امنیتی ، درجه ی ایزوله سازی ، نوع سیاست و حوزه ی آن می شود . اینگونه مسائل ، طبیعتاً مسائل بنیادی معماری نیستند بلکه مربوط به شرکت ها می شوند . آنها می خواهند مطمئن شوند که شکافی بین مدلهای محاسبات توزیع شده در بین شرکت های شرکت کننده و زیر ساختهای IT داخلی وجود ندارد .

Grid Computing استانداردهای باز ی وب سرویس ها را توسعه داده است تا با استفاده از آنها بتوان منابع محاسباتی را روی بستر اینترنت ارائه کرد . خیلی کم اتفاق می افتد که Grid بر روی یک محیط همگن پیاده سازی شود و معمولاً ما یک محیط ناهمگن سر و کار داریم .
اگر بیشتر بر روی راهکارهای محاسبات توزیع شده متمرکز شویم می توانیم Grid Computing را محاسبات توزیع شده بر روی منابع مجازی سازی شده تعریف کنیم . هدف ساختن یک کامپیوتر پر قدرت مجازی است . این کامپیوتر با استفاده از تعدادی منابع محاسباتی به هم پیوسته و احتمالاً ناهمگن ساخته شده است .

فصل دوم – مزیت های Grid Computing
در این فصل مزیت هایی که Grid Computing این است که برنامه ای که معمولاً روی ماشین خاصی اجرا می شود ، در شرایطی خاص به خاطر این که آن ماشین مشغول است ، در ماشین دیگری که کمتر مشغول است اجرا گردد .

برای این چندین سناریویی دو پیش نیاز وجود دارد . اول این که برنامه قابلیت اجرا در ماشین راه دور را داشته باشد . به عنوان مثال نباید به داده های روی ماشین اصلی وابسته باشد . دوم این که ماشین دوم ویژگی های سخت افزاری و نرم افزاری که در مورد نیاز آن برنامه است را داشته باشد .
برای مثال برنامه ای که بیشتر وقت خود را صرف محاسبه بر روی داده های ورودی می کند و خروجی تولید می کند احتمالاً ساده ترین و ایده آل ترین برنامه ای است که می توان با این Grid استفاده کرد . اگر مقدار ورودی و خروجی زیاد باشد ، باید فکر بیشتری شود که این برنامه بتواند به صورت مؤثر بر روی Grid اجرا شود . به نظر نمی رسد که از واژه ی ” پردازنده ی راه دور ” در Grid استفاده شود . چون معمولاً با تاخیر بسیار زیادی برای رساندن داده ها به پردازنده روبرو هستیم .

در بیشتر سازمان ها تعداد بسیار زیادی منابع محاسباتی وجود دارد که از توان آنها به درستی استفاده نمی شود . معمولاً بیشتر ماشین های رومیزی در یک روز کاری ، کمتر از ۵ درصد مشغول هستند . در برخی از سازمان ها ماشین های سرور نیز در بیشتر اوقات بی کار هستند .Grid Computing بستری برای استفاده مؤثر از این منابع به وجود می آورد .

منابع محاسباتی تنها منابعی نیستند که ممکن است از آنها کم استفاده شود . ممکن است ماشینها
مقدار زیادی فضای استفاده نشده بر روی دیسک خود داشته باشند . Grid Computing ( به طور خاص Data Grid ) این فضاها را به فضای مجازی بزرگ ، ” مجازی سازی ” می کند و در نتیجه بستری برای استفاده مؤثر از فضاهای استفاده نشده فراهم می آورد .

اگر یک پردازش دسته ای به مقدار زیادی داده نیاز داشته باشد ، این داده ها می توانند در نقاط استـراتژیک مختلف پخش شوند و بنابـراین اگر این پردازش بخواهد در ماشین دیگری اجرا شود ، داده ها در آنجا هستند و نیازی نیست که به جای دیگری منتقل شود . این کار باعث افزایش کارایی می شود و نیز می توان از نسخه های گوناگون به عنوان نسخه ی پشتیبان برای وقتی که نسخه ی اصلی از بین رود استفاده کرد . این کار مزیت دیگر Grid ، متعادل کردن استفاده از منابع است .
ممکن است برای سازمانی یک پردازش غیر منتظره پیش آید و ماشینی که قرار است پردازش را انجام دهد بسیار مشغول باشد ، اگر این پردازش بتواند در بستر Grid اجرا شود ، می توان آن را به ماشین دیگری انتقال داد تا استفاده از منابع به صورت متعادل انجام گیرد . این متعادل سازی استفاده از منابع می تواند برای CPU ، حافظه و یا هر منبع دیگر موجود در Grid استفاده شود .

[jaco 2005]
2-2- قابلیت محاسبه ی موازی
محاسبات بزرگ قابلیت موازی سازی دارند یکی از مواردی است که Grid کاربرد گسترده ای دارد عـلاوه بر کـارهای تحقیقـاتی و علمـی این دید از Grid Computing در بیولـوژی ، مدل سـازی اقتصادی ، یافتن نفت ، انیمیشن سازی و غیره نیز کاربرد دارند .

ویژگی مشترک این کاربرها این است که برنامه را می توان به صورت موازی بر روی CPU های مختلف اجرا کرد . یک برنامه ای که می تواند تحت Grid اجرا شود و مقدار زیادی Grid نیاز دارد را می توان به عنـوان چندین ریز کار کوچک دید . اگر این ریز کـارها نیازی به مبادله ی اطلاعات با هم نداشته باشند و در واقع به هم وابستگی نداشته باشند ، در بهترین حالت به وسیله ی N پردازنده ( کامپیوتر ) با سرعت N برابر بیشتر از حالتی که به وسیله یک پردازنده پردازش می شود ، اجرا می گردد . به این نوع پردازش ها ، پردازش های قابل رشد گفته می شود .

اما موانعی بر سر راه قابل رشد بودن ، وجود دارد . اولین مشکل مربوط به الگوریتم کار می شود . اگر با توجه به الگوریتم مجبور باشیم که کار را فقط به تعداد محدودی ریز کار بشکنیم ، و در صورتی که بیشتر از آن تعداد CPU داشته باشیم ، نمی توانیم از تمام قدرت استفاده کنیم و این اولین مشکل است .

دومین مشکل مربوط به وقتی می شود که کارها به هم وابسته باشند . این منجر به رقابت می شود و قابلیت رشد را کم می کند . به عنوان مثال اگر تمام ریزکار ها مجبور باشند از یک فایل و یا پایگاه داده بخوانند و در آن بنویسند ، سرعت آن منبع داده عامل محدود کننده می شود .
فاکتـورهای دیگـر نیز باعث تأخیر مـی شوند . و در عمل از سرعت اجـرا می کاهند . برای مثال می توان به پهنای باند شبکه ، سرعت جابجایی پیام ، پروتکل های همزمان سازی ، پهنای باند منابع ذخیره سازی و تأخیرهای دیگر اشاره کرد . عوامل زیادی برای برنامه ای که قرار است بر روی Grid اجرا شود ، در نظر گرفته شود . باید به این نکته توجه کرد که هر برنامه ای را نمی توان موازی سازی کرد و آن را بر روی Grid اجرا کرد .

در حال حاضر هیچ ابزار کاربردی برای تبدیل کردن یک برنامه در حالت کلی به برنامه ی موازی وجود ندارد . ابزارهایی وجود دارد که به برنامه نویسان برای نوشتن برنامه های موازی کمک می کند ولی هنور هیچ ابزاری برای تبدیل برنامه ها وجود ندارد و این تبدیل اتوماتیک دانشی است که بر روی آن مطالعه می شود و اگر پیاده سازی آن ممکن باشد ، نیازمند مهارت برنامه نویسی و ریاضی زیادی است .

۲-۳- منابع مجازی و سازمان های مجازی
موارد دیگری که به وسیله ی Grid Computing ممکن می شود ، فراهم آوردن محیطی برای همکاری بین شرکت هاست . در گذشته محاسبات توزیع شده تا حدودی به این هدف نزدیک شده است ولی با Grid Computing این قابلیت می تواند گسترده تر نیز شود . چون Grid اسـتانداردهایی را برای اشتـراک گذاشتن منـابع در یک محیط نامتجـانس فـراهم می آورد . با استفاده از Grid یک سیستم محاسباتی بزرگ مجازی ، با منابع گوناگون تولید می شود .
سازمان های گوناگون ، منابع خود را به اشتراک می گذارند و سازمان مجازی می سازند تا با هم همکاری کنند و به هدف خاصی برسند . این سازمان ها هر کدام دارای ویژگی ها و سیاست های خاص خود هستند . این موضوع در شکل ۲-۱ نشان داده شده است .

به اشتـراک گذاری با داده ها شـروع مـی شود . این داده ها بصورت فایل و یا در پایگاه داده ذخیره اند . یک Data Grid استفاده از داده ها را یصورت مؤثرتری ممکن می سازد . فایل ها و پایگاه های داده می توانند از ماشین های زیادی استفاده کنند و در نتیجه فضای زیادی را بوجود آورند که از یک ماشین تنها کاراتر است . این پخش کردن داده ها مزیت های دیگری نیز دارد . از آن جمله می توان به افزایش پهنای باند و در برخی موارد نگه داشتن نسخه های پشتیبان اشاره کرد .

ولی به اشتراک گذاشتن فقط محدود به فایل ها نیست ، بلکه شامل دیگر منابع نیز می شود . به عنوان مثـال مـی توان به دستـگاه های خاص ، نرم افزارها ، سرویس ها و غیره اشاره کرد . ایـن منابع
” مجازی سازی ” می شوند تا به یک شکل واحد در Grid نامتجانس ارائه شوند .

شکل ۲-۱- Grid منبع نامتجانس و از نظر جغرافیایی از هم جدا را مجازی سازی می کند .

۲-۴- دسترسی به منابع اضافه
همانطور که اشاره شد به غیر از CPU و حافظه ، Grid می تواند امکان استفاده از منابع دیگر را نیز فراهم کند . به عنوان مثال اگر کاربردی به پنای باند بیشتری برای استفاده از اینترنت ، برای پیاده سازی یک موتور جستجوی Data Mining داشته باشد ، کار می تواند به ریزکارها تقسیم شود و به ماشینهای دیگری که هر کدام اتصال جدایی به اینترنت دارند ، فرستاده شوند . اگر این ماشین ها از یک ارتباط به اشتراک گذاشته برای اینترنت استفاده کنند ، کارایی سیستم زیاد نخواهد بود .

ممکن است بعضی از ماشین ها دارای نرم افزار های گران قیمتی باشند ، اگر کابران به آنها نیاز داشته باشند ، Grid می تواند به آنها کمک کند تا کار خود را بر روی آن ماشین اجرا کنند .
بعضی از ماشین های Grid ممکن است دستگاه خاصی داشته باشند . خیلی از ما از چاپگرهای به اشتراک گذاشته شده استفاده کرده ایم ؛ به روشی مشابه ، Grid می تواند استفاده از دیگر دستگاه ها را برای کاربران ممکن کند . به عنوان مثال این دستگاه می تواند یک دستگاه DVD Writer سریع و گران قیمت باشد . بعضی از ماشین های روی Grid ممکن است به میکروسکپ های الکترونی مجهز باشند که قابلیت کنترل با کامپیوتر را دارند . در این موارد زمان بندی و مدیریت منابع موجود در Grid اهمیت زیادی پیدا می کند .

این دستگاه ها می توانند پیچیده تر نیز باشند مثل دستگاه عمل جراحی از راه دور . امروزه شاهد چاپگر هایی هستیم که به اشتراک گذاشته شده اند و در آینده شاهد استاندارد سازی روی دستگاه ها و منابع دیگر نیز خواهیم بود . تمام اینها باعث می شود که Grid مثل مجموعه ای از منابع دیده شود
۲-۵ متعادل سازی استفاده از – منابع
یک Grid منابع توزیع شده را که بر روی ماشین های جداگانه قرار گرفته اند ، متحد می کند تا یک سیستم یکپارچه بوجود آورد . مکانیزمی برای متعادل سازی استفاده از این منابع در Grid وجود دارد .
این مکانیزم زمانبندی است که ریزکارها را بر روی منابع بصورت متعادل توزیع می کند . همان طور که شکل ۲-۲ نشان می دهد این مکانیزم برای توزیع بار در یک سازمان بزرگ بسیار لازم است . این کار به دو روش انجام می شود .

 قسمت پرکار می تواند به ماشین های تقریباً بیکار هدایت شود .
 اگر تمام امکانات Grid مشغول باشد ، کارهای با اولویت پایین تر می توانند متوقف شوند تا فضا و امکانات کافی برای کارهای با اولویت بالاتر بوجود آید .
بدون زیر ساخت Grid این کار مشکل می گردد . باید توجه داشت که Grid نمی تواند معجزه کند ولی اگر کار قابل قسمت کردن باشد و تعداد کافی پردازنده وجود داشته باشد ، می توان گفت که Grid قدرت محاسباتی بالایی فراهم می کند .

شکل۲-۲- کارها به جاهایی که بار کمتری دارند برده می شوند
زمانبندی های پیشرفته نیز می تواند وجود داشته باشد تا به عنوان مثال مقدار ترافیک شبکه کاهش یابد یا پیام ها از راه های کوتاه تری هدایت شوند .

۲-۶- قابلیت اطمینان
سیستم های محاسباتی پیشرفته از سخت افزار های گران قیمت بهره می برند تا بتوانند قابلیت اطمینان بالاتری ارائه دهند . آنها با استفاده از سخت افزارها و مدارهای منطقی ساخته می شوند که در صورت بروز خطا و از کار افتادن ، قابلیت بازیابی دارند . همچنین ماشین هایی با چند پردازنده وجود دارد که در صورت بروز خطا و از کار افتادن یکی از پردازنده ها ، پردازنده ی دیگری می تواند جایگزین آن شود . برق برخی از سیستم ها از دستگاه های خاصی کنترل می شود و در صورت بروز مشکل ، ژنراتوری برای برق رسانی فعال می شود . تمام اینها یک سیستک مطمئن را بوجود می آورند ، ولی با هزینه ی زیاد .

در آینده شاهد دیدگاه جدیدی در قابلیت سیستم ها خواهیم بود که مبتنی بر سخت افزار و نرم افزار است . Grid شروع این تکنولوژی است . یک سیستم Grid می تواند به نسبت ارزان تر و از نظر جغرافیایی نیز گسترده باشد . بنابراین اگر مشکل از کار افتادن برق یا چیز دیگری در قسمتی ازسیستم پیش آید احتمالاً قسمت های دیگر تحت تأثیر قرار نخواهند گرفت . نرم افزار مدیریت Grid می تواند آن کار را به قسمت دیگری محول کند .

در شرایط بحرانی ، چندین نسخه از یک کار می تواند در ماشین های مختلف اجرا شود ، همانطور که در شکل ۲-۳ دیده می شود ، و بعد نتیجه می تواند برای بروز خطا یا موارد دیگر کنترل شود .

شکل ۲-۳ – پیکر بندی Grid در مواقع بحرانی
سخت افـزارهای کنونی از قابلیـت اطمینـان بـالایی برخوردار هستند و ایـن قابلیت اطمینان با Grid می تواند کامل تر شود .

۲-۷- مدیریت
مجازی سازی منابع در Grid و کنترل یک سیستم ناهمگن بزرگ ، موقعیت بهتری برای مدیریت زیرسـاخت های IT فراهم می آورد . مجـازی سازی منـابع ، مدیریت منـابع را در یک سیستم بزرگ ساده تر می سازد . در گذشته سازمان ها مسئول زیر ساخت های IT خود بودند و آنها را کنترل می کردند ولی با بوجود آمدن سـازمان های مجازی و ترکیب شدن Grid های سازمان های مختلف ، کنترل و مدیریت منابع ساده تر می گردد .

شکل ۲-۴- مدیران می توانند سیاست های خاصی را تنظیم کنند .

فصل سوم – مفاهیم و معماری
در این فصـل به هدف ، سیر تکامل ، معماری و پیـاده سازی یک سیستم Grid مـی پردازیم . واژه یGrid در اواخر دهه ی ۱۹۹۰ در مورد محاسبات توزیع شده برای مصارف علمی و فنی – مهندسی استفاده شد . از آن زمان به بعد این موضوع پیشرفت های زیادی داشته است . واژه ی Grid با موضوع های زیادی در ارتباط است ، از آن جمله می توان به شبکه های پیشرفته ، محاسبات خوشه ای و هوش مصنوعی اشاره کرد .

مفاهیم Grid در ابتدا برای به اشتراک گذاشتن منابع برای مصارف تحقیقاتی بوجود آمد . امروزه کاربردهای Grid از محاسبات پیشرفته و آنالیز کردن داده ها تا پایگاه های داده ی توزیع شده و همچنین به هم پیوسته ساختن تجهیزات علمی و کامپیوترها برای ذخیره سازی ، گسترده است . اما چیزی که این کاربردها را با هم مرتبط می سازد ” نیاز” به اشتراک گذاشتن منابع و حل مشکلات به صورت پویا و در محیطی ” نا متجانس” است .

به تازگی مشخص شده است که کاربرده های Grid فقط به مصارف علمی و تحقیقاتی محدود نمی شود ، بلکه در مورد اقتصادی نیز کاربرد دارد . با گسترش وب به عنوان یک تکنولوژی برای ارتباط ، تکنولوژی Grid نیز پیشرفت کرده است . هدف اولیه ی فن آوری اطلاعات این بوده است که مردم را در انجام دادن کارهای روزمره شان به صورت ساده تر ، یاری کند . با توجه به اینکه خیلی از کارهای روزمره با همکاری دیگران انجام می شود ، Grid می تواند نقش مؤثری در این همکاری ایفا کند .[grama 2003]

موفقیتGrid در دوره ی کنونی مدیون مفاهیم معماری خوب ، استاندارد سازی در نرم افزارهایی که در آن اجرا می شوند ، هماهنگ سازی با نیاز های امروز و گروهی از برنامه نویس های پویا از سراسر دنیاست که به پیشرفت این مفهوم کمک می کند . ترکیب این فاکتورها باعث شده که تجربیات جدیدی در این زمینه بوجود آید و این تجربیات باعث بوجود آمدن تعریف معماری سرویس گرای Grid ، OGSA شده است . تا کنون پروژه های مختلف هم در زمینه های اقتصادی و هم در زمینه ی علمی با استفاده از این معماری پیاده سازی شده است .

۳- ۱- سازمان های مجازی و Grid
سناریوهای زیر را در نظر بگیرید :
 شرکتی می خواهد در مورد مکان یکی از قسمت های خود که قرار است پیش بینی های پیچیده ی اقتصادی را انجام دهد ، تصمیم بگیرد . در این راه از شرکت ASP کمک می گیرد . شرکت مورد نظر اطلاعات تاریخی کافی و همچنین چیزهای مورد نیاز را در اختیار ASP قرار می دهد . در طول جلسه ی تصمیم گیری ، گفتگوهای مختلفی انجام می شود ولی اعضا ی جلسه در شهرهای مختلف قرار دارند .

 یک کنسرسیوم فنی می خواهد تحقیقاتی روی نسل جدید هواپیماهای مافوق صوت انجام دهد . برای این کار باید شبیه سازی دقیقی در مورد کل قسمت های هواپیما انجام شود . این برنامه ی شبیه سازی از قسمت های مختلفی که هر کدام را شرکت خاصی در کنسرسیوم نوشته است ، تشکیل شده است . هر قسمت از شبیه سازی بر روی کامپیوتر های شرکتی که آن را نوشته است ، اجرا می شود و به اطلاعات طراحی و داده های دیگر که توسط دیگر اعضاء پدید آمده است ، دسترسی دارد .

 یک تیم مدیریت بحران مسئول رسیدگی به پخش شدن مواد شییایی شده است . آنها با استفاده از وضعیت آب و هوای محلی مدل های خاک ، پیشرفت پخش شدن ماده ی شیمیایی را پیش بینی می کنند . آنها اثرات این پخش شدن را با استفاده از بررسی های جمعیتی و همچنین بررسی های جعرافیای مثل رودخانه ها و منابع آب محاسبه می کنند و طرحی کتاه مدت برای کم کردن اثرات مخرب آن طراحی می کنند . این تیم کار خود را با تخلیه ی محل و خبر دادن به بیمارستان ها و نهاد های مربوطه ادامه می دهند .

 هزاران فیزیک دان در صدها آزمایشگاه در سراسر دنیا گرد هم آمده اند تا یک حسگر را طراحی کنند ، بسازند و آزمایش و آنالیز کنند . این کار برای مؤسسه ی اروپایی CERN که در زمینه ی انرژی فعالیت می کند انجام می شود . در فاز آنالیز کردن ، آنها امکانات محاسباتی ، حافظه ها و شبکه های خود را به اشتراک می گذارند تا یک Data Grid بسازند که بتواند اطلاعات در حد پتا بایت را آنالیز کنند .

 یک زیست شناس می خواهد بداند که دارویی خاص ، چه تأثیری بر روی اتصالات بین عصب ها می گذارد و نیز می خواهد بداند تأثیر کلی آن بر کارکرد و کارایی مغز به چه صورت است . برای یافتن چوب جواب او باید شبیه سازی های سطح پایینی انجام دهد ، نتایج را به سطوح بالاتر نیز منتقل کند و شبیه سازی را در آنجا ادامه دهد . این شبیه سازی به اطلاعات زیادی نیاز دارد که در پایگاه داده های مختلف ذخیره شده است .

این مثال ها در موارد گوناگونی با هم متفاوت هستند : تعداد و نوع طرف های شرکت کننده ؛ نوع فعالیت ، طول و مقدار عملیات ، منابعی که به اشتراک در آمده اند . ولی چیز مشترکی نیز وجود دارد : در همه ی آنها ، منابع به اشتراک گذاشته می شوند و همچنین این به اشتراک گذاشتن خیلی بیشتر از مبادله ی پرونده و فایل است . در این مثال ها ، دسترسی مستقیم به برنامه ها ، کامپیوترها ، داده ها ، حسگرها و دیگر منابع وجود دارد . به عنوان مثال اعضای کنسرسیوم ، می توانند دسترسی کنترل شده ای به برنامه ها و داده های مشخصی را برای دیگر اعضا فراهم کنند و یا قدرت محاسباتی کامپیوتر های خود را به اشتراک بگذارند .

به صورت خلاصه تر چیزی که به صورت مشترک در این مثال ها دیده می شود ” اشتراک منـابع
بصورت هماهنگ و متعادل ، و حل مسائل بصورت پویا در سازمان های مجازی ” است . این به ” اشتراک گذاشتن ” که از آن صحبت می شود تنها به اشتراک گذاشتن فایل نیست ؛ بلکه دسترسی مستقیم به کامپیوترها ، نرم افزارها ، داده ها و دیگر منابع است که در صنعت و علم کاربرد دارد .

این به اشتراک گذاشتن با اجازه و کنترل صاحب منبع انجام می شود . او مشخص می کند که دقیقاً چه چیزی به اشتراک گذاشته می شود و چه کسی می تواند از آن استفاده کند . معنی واژه ی ” سازمان مجازی” اینجـا مشخص مـی شود . سـازمان مجـازی به مجموعه ای از سـازمان ها گفته می شود که منابع خود را به اشتراک گذاشته اند تا به هدفی مشخص برسند . همانطور که مثال های بالا مشخصی می سازند ، سازمان های مجازی می توانند در مورد مختلفی بسیار متفاوت باشند ، در هدف حوزه ی کاری ، انـدازه ، مدت زمان ، سـاختار و بسـیاری چیزهای دیـگر ولی با وجود ایـن تفاوتها می توانیم ببینیم که در موارد بسیاری نیز شباهت دارند .

بصورت کلی سیستمی برای به اشتراک گذاشتن بصورت خیلی انعطاف پذیر وجود داشته باشد . سیستم های ارتباطی می توانند شکل های گوناگونی داشته باشند ؛ از سیستم های Client-Server تا سیستم های Peer – to – Peer . و همچنین امکاناتی برای کنترل دقیق و پیشرفته بر روی مسائل و سیاست های مروط به اشتراک گذاشتن . برای دیدن منبع بصورت یک “سرویس” . در این صورت قابلیت های منبع می تواند بصورت استاندارد ارائه شود و استفاده از منبع ساده تر می گردد و نیازی نیست که کاربر بداند منبع از نظر فیزیکی در کجا قرار گرفته است یا نوع پیاده سازی منبع به چه صورتی است . این منابع میتوانند بصورت های گوناگونی مورد استفاده قرار گیرند ؛ بصورت چند کاربره یا تک کاربره .

اشتراک منـابع و سـازمان های مجازی چیزهای جدیدی نیستند . همچنین سیستم های توزیع شده ، شبکه ها ، سیستم های عامل و سیستم های امنیت اطلاعات بیش از ۳۰ سال است که در جـریان هستند . ملی چیزی که جدید است ، گستـرش اینتـرنت و فن آوری شبکه است که بـاعث می شود به واقع بتوانیم در مورد به اشتراک گذاشتن منابع صحبت کنیم و بتوانیم سازمان های مجازی را در ابعادی بزرگ پیاده سازی کنیم .

۳-۱-۱- چالش های تکنیکی در به اشتراک گذاشتن
سازمان مجازی که از آن صحبت کردیم می تواند کوچک یا بزرگ ، با طول عمر کم یا زیاد ، تشکیل شده از یک یا چند صنعت ، همگن یا ناهمگن باشد . یک سازمان مجازی خاص ممکن است بصورت سلسله مراتبی از سیستم های کوچک تر ساخته شده باشد . بعلاوه جدا از این تفاوت ها ، برنامه نویسان سازمان های مجازی با چیزهای مشترکی سرو کار دارند . همه قصد دارند که ” کیفیت سرویس ” بالاتری ارائه دهند . این کیفیت سرویس می تواند با معیارهای مختلفی سنجیده شود . به عنوان مثال این کیفیت می تواند با معیارهای امنیت سیستم ، توانایی تصحیح خطا و تحمل در برابر خطا یا کیفیت مدیریت منابع سنجیده شود .

از مثالی که در شکل ۳-۱ آمده است برای تشریح پیچیدگی هایی که برای توسعه ی برنامه ها در سازمان های مجازی با آنها روبرو هستیم ، استفاده می کنیم . شکل سه سازمان فیزیکی جدا از هم را نشان می دهد ؛ AirCar ، Goeing ، CycleRus . هر کدام از آنها می توانند در سازمان های مجازی مختلفی وجود داشته باشند و قدرت محاسباتی یا منابع دیگر را به اشتراک بگذارند .

AirCar و Goeingکه در زمینه ی هوا – فضا فعالیت می کنند ، هر دو عضو یک سازمان مجازی بین المللی هستند و نام این سازمان VO-Space است و در زمینه ی ساخت ماشین های فضایی پیشرفته فعالیت می کند . بعلاوه Goeing در یک کنسرسیوم برای به اشتراک گذاشتن Cycle شرکت دارد . نام آن VO-Cycles است و Cycle های استفاده نشده را به اشتـراک میگذارد و این کار برای انجام محاسبات پیشرفته استفاده می شود .

اشتراک منابع معمولاً بصورت شرطی انجام می شود : صاحب منبع تعیین می کند که چه زمانی منبع موجود است و می توان از آن استفاده کرد و چه کاری می توان با آن انجام داد . در شکل ، جملاتی که در گیومه آمده است ، شرایط استفاده از منبع یا سرویس را مشخص می کند . برای مثال
AirCar ممکن است به همکارانش در VO- Space فقط اجازه دهد که از امکانات محاسباتی شرکت فقط برای شبیه سازی های “ساده” استفاده کنند . همچنین مصرف کننده های یک سرویس یا منبع می توانند شرط هایی برای استفاده از آن داشته باشند . به عنوان مثال کاربران VO-Cycles ممکن است فقط منابع محاسباتی را قبول کنند که ” امن” باشد . باید مشخص باشد که استفاده کننده از منبع چه کسی است و باید نوع عمل نیز مشخص باشد .

شکل ۳-۱- یک سازمان مجازی
رابطه ی ” به اشتراک گذاشتن ” می تواند با گذشت زمان و بصورت پویا تغییر کند . این تغییرات می تواند بر روی درگیر بودن منابع ، طبیعت دسترسی ها و طرفی که دسترسی برایش فراهم شده است ، انجام شود . لازم نیست که دسترسی ها بصورت مشخص برای کاربری خاص گفته شود بلکه می تواند بصورت تلویحی گفته شود . برای نمونه CycleRUS می تواند امکان دسترسی به منبع را فقط برای کاربری که ” مشتری ” باشد فراهم کند . پس ما به مکانیزمی که برای قرار دادن افراد در گروه های مختلف نیاز داریم . همچنین به عنوام مثال کسی که عضو VO-Cycles است باید بتواند بفهمد که به چه منابعی دسترسی دارد و نیز ممکن است بخواهد بداند که ” کیفیت ” آن چقدر است

برخی از اوقات این ” به اشتراک گذاشتن ” به صورت Client-Server نیست ، بلکه ممکن است
به صورت Peer-to-Peer انجام شود . در این شرایط ، فراهم آورندگان منبع می توانند مصرف کننده نیز باشند و این رابطه ی ” به اشتراک گذاری ” می تواند بین هر زیر مجموعه ای از طرف ها وجود داشته باشد . این روابط می توانند ترکیب شوند تا استفاده از منبع را متعادل کنند . هر کدام از این منابع توسط سازمانی فراهم شده اند ؛ به عنوان مثال در VO-Cycles یک محاسبه بر روی منبع شروع می شود و بعد بر روی منبع در جای دیگر ادامه می یابد .

یک منبع مشخص همگن است در جاهای مختلف و به روش های مختلف استفاده شود . به عنوان مثال یک کـامپیوتر ممکن است فقط برای یک قطعه خاص نرم افـزاری در نظر گرفته شده باشد .