سلام من این مطالب را برای دوستایی که مث من تا حالا اسم grid computing را نشنیدن پیدا کردم:
Grid computing چیست ؟
حدود ۳۳ سال از به وجود آمدن اینترنت میگذرد و از سال ۱۹۸۹ که وب پدید آمد، بیشتر مردم از آن استفاده میکنند و بهصورت بخشی از زندگی ایشان در آمده است. شاید علت این استفاده زیاد از اینترنت، استاندارد باز آن بوده است که امکان ارتباط کامپیوترهای مختلف را با یکدیگر مهیا میسازد. با استفاده از اینترنت میتوانید از هر کامپیوتری که بهآن متصل است، ایمیل بفرستید و شخصی در آن طرف دنیا با کامپیوتری کاملاً متفاوت با کامپیوتر شما، آن ایمیل را به راحتی بخواند و به شما ایمیل دیگری بفرستد.
امروزه تقریباً تمامی شرکتها و سازمانهای بزرگ، برای تبادل اطلاعات و فرستادن ایمیل بهمشتریان خود از اینترنت استفاده میکنند. پرسش این است که آیا بهراستی امکاناتی که اینترنت در اختیار ما قرار میدهد، فقط در فرستادن ایمیل و داشتن وبسایت خلاصه میشود؟ آیا اینترنت امکان استفاده از منابع سختافزاری سیستمهای دیگر را نیز به ما میدهد؟ پس از اینترنت چه ابزار یا بستری خواهد آمد؟
امروزه فناوری جدیدی به نام Grid به عرصه ارتباطات قدم نهاده است که براساس آن با دانلودکردن یک محافظ نمایشگر مخصوص میتوانیم بهکامپیوترهای شخصی خود اجازه دهیم که وقتی از آن استفاده نمیکنیم، به شبکه جهانی متصل شوند و به سیستمهای بزرگ تحقیقاتی اجازه دهند از منابع آزاد و بلااستفاده سیستم ما استفاده نماید. کامپیوترهای امروزی مانند مغز انسان معمولا از بخش کوچکی از تواناییهای خود استفاده میکنند و اغلب به صورت غیرفعالند و منتظر اطلاعات ورودی میمانند.
تصور کنید که اگر از منابع سختافزاری این همه کامپیوتر غیرفعال استفاده شود و همه در یک کامپیوتر جمع شود، چه دستگاه پرقدرتی خواهیم داشت. Grid Computing با کمک اینترنت زمینهای را فراهم آورده است که بتوان از منابع سختافزاری سیستمهای دیگر نیز استفاده نماییم.
ممکن است Grid برای افراد مختلف معانی متفاوتی داشته باشد، اما اگر بخواهیم تعریف سادهای از آن داشته باشیم،
میتوانیم بگوییم Grid Computing در واقع بهشما اجازه میدهد با استفاده از منابع سیستمهای متصل به شبکه و ایجاد یک منبع بزرگ از سرویسها و امکانات این سیستمها، مرکزی بزرگ و قدرتمند به وجود آوریم که توانایی انجامدادن عملیات بسیار پیچیدهای را داشته باشد که یک سیستم بهتنهایی نمیتواند انجام دهد. بهنحوی که از دید استفادهکنندگان این سیستمهای بزرگ، این عملیات تنها از طریق یک سیستم انجام میشود.
Grid Computing در حقیقت نسل جدیدی از شبکههای توزیع یافته است و همانند اینترنت به کاربران خود اجازه میدهد فایلها را به اشتراک بگذارند. بهعلاوه، منابع مشترکی از اطلاعات را برای استفادهکنندگان فراهم میکند. با استفاده از این سیستمها میتوان منابع کامپیوترهای ناهمگون را بهاشتراک گذاشت. هدف اصلی Grid استفاده از این منابع مشترک مانند قدرت پردازنده، پهنای باند، پایگاه اطلاعاتی و در اختیار گذاردن آن برای کامپیوتر مرکزی است.
انواع Grid
سیستمهای Grid با توجه به نیازهای کاربران میتوانند در انواع مختلف مورداستفاده قرار گیرند. اغلب این سیستمها بر اساس نوع کاری که انجام میدهند، طبقه بندی میشوند.
از سه نوع اصلی این سیستم میتوان از Gridهای اطلاعاتی، Gridهای جوینده منابع و Gridهای محاسباتی نام برد.
Gridهای اطلاعاتی یا Data Grid موظفند اطلاعات را ذخیره کنند و آنها را در اختیار کاربران قرار دهند. کاربران این سیستمها بدون آنکه از موقعیت جغرافیایی و مکانی این اطلاعات آگاه باشند، به اطلاعات دسترسی دارند. مثلاً تصور کنید که دو دانشگاه در دو سوی دنیا یکی در ایران و دیگری در انگلستان روی یک مطلب علمیمشترک تحقیق میکنند و هر یک از آنها اطلاعات خاص خود را ذخیره میکند و میخواهد دانشگاه دیگر نیز به برخی از این اطلاعات (نه تمامیآن) دسترسی داشته باشد. این دانشگاهها میتوانند از یک Data Grid استفاده کنند و اطلاعات خود را با ضریب امنیتی بالایی با هم بهاشتراک بگذارند.
در این نوع Grid دستگاههای متصل بهسیستم نیاز بهقدرت زیاد ندارند و فقط مسئول به اشتراک گذاشتن اطلاعات هستند. از طرف دیگر Grid های محاسباتی یا Computational Grid از آن جا که نیاز زیادی به قدرت پردازندهها دارند، باید از ماشینهایی با قدرت بسیار بالا استفاده نمایند.
یکی دیگر از انواع Gridها، سیستمهای جوینده منابع یا Scavenging Grid است. این سیستمها از تعداد زیادی کامپیوتر شخصی استفاده میکنند و بهصورت مداوم بهدنبال ظرفیتها، منابع آزاد و چرخه پردازنده (CPU cycle) کامپیوترهای متصل به Grid هستند و از این منابع استفاده مینمایند. البته صاحبان این کامپیوترهای شخصی باید قبلاً اجازه استفاده از منابع بدون استفاده خود را بدهند.
اهمیت Grid Computing
تقریبا در همه سازمانها و شرکتهای بزرگ تعدادی کامپیوتر بدون استفاده وجود دارد. مثلاً سرورهای یونیکس از تقریباً ده تا بیست درصد از ظرفیت حقیقی خود استفاده میکنند و کامپیوترهای شخصی حدوداً از ۹۵ درصد از ظرفیت خود اصلاً استفاده نمیکنند. با استفاده از Grid Computing در یک سازمان یا شرکت بزرگ میتوان از منابع بلااستفاده کامپیوترهای سازمان کمال استفاده را برد و سرعت پردازش اطلاعات در سیستمهایی که با کمبود حافظه مواجهند را جبران نمود. از طرف دیگر، سرعت نرمافزارهایی که از این منبع بزرگ سختافزاری استفاده میکنند، بسیار بالاتر خواهد بود و در نتیجه میتوانیم به فکر درست کردن نرمافزارهایی با قابلیتهای بالاتر باشیم و منابع بیشتری را در اختیار استفادهکنندگان قرار دهیم.
Grid Computing میتواند مزایای زیادی برای مدیران و برنامهنویسان داشته باشد. مثلاً با آن میتوان برنامههایی که نیاز بهحافظه زیادی دارند را اجرا نمود و به اطلاعات، دسترسی آسانتری پیدا کرد. اصولا ًGrid Computingمیتواند بهسازمانها و شرکتهای بزرگی که سرمایه هنگفتی را در IT هزینه کردهاند، کمک کند از سیستمهای خود حداکثر استفاده را ببرند.
فناوریهای Grid در واقع میتوانند از منابع و سیستمهای غیرمتمرکز پشتیبانی کنند و امکان ارتباط سیستمها را با هم فراهم سازند. وقتی برای اولین بار فناوری Grid ابداع شد، هدف آن تنها بهاشتراک گذاشتن منابع سیستم و در اختیارداشتن سیستمیقدرتمند بود و بهطور کلی بیشتر در اختیار مؤسسات تحقیقاتی قرار داشت. اما امروزه از Grid توقع بیشتری میرود و اهمیت بیشتری پیدا کرده است؛ بهویژه در تجارت الکترونیک و سیستمهای تجاری غیرمتمرکز و توزیعیافته. به عنوان نمونه، مدل تجارت الکترونیک B2B را در نظر بگیرید که دو مؤسسه تجاری اطلاعات خود را از طریق اینترنت با هم مبادله میکنند. Grid نیز میتواند کاری مشابه را انجام دهد و دو یا چند سیستم تجاری را بههم مرتبط سازد. بهطوری که بتوانند اطلاعات خود را بهاشتراک بگذارند. فناوری Grid همچنین میتواند راهحل مناسبی برای افزایش دسترسی، قابلیت اطمینان و امنیت سیستمهای غیرمتمرکز نیز باشد.
ابزار قدرتمند Globus
یکی از قدرتمندترین ابزارهای ایجاد، کنترل و مدیریت سیستمهای Grid، ابزار Globus است. پروژه Globus حدود سال ۲۰۰۳ بهصورت عملی درآمد. این پروژه حاصل تلاش مشترک محققان و برنامهنویسان Grid در سرتاسر دنیاست که بر حول چهار محور بنا شده است: تحقیق، ابزارهای نرمافزاری، آزمون و نرمافزارها. این ابزار در نسخه ۲/۲ خود خدمات بسیاری بهمدیران سیستمهای Grid ارائه میکند که میتوان به امنیت، مدیریت منابع و مدیریت دقیق اطلاعات اشاره کرد.
Globus با در اختیار گذاشتن APIها و فایلهای Header زبان C برای ساختن و کامپایل برنامهها به برنامهنویسان اجازه میدهد سیستمهای خود را به Grid متصل نمایند و به مدیران امکان میدهد منابع متصل به Grid را بهراحتی مدیریت کنند.
اضافه براین، Globus با در اختیار گذاشتن Componentهایی مخصوص، کار مدیران Grid را آسانتر میکند. مثلاًGlobus یک ابزار بسیار کارا بهنام Commodity Grid) COG) که زبانهای برنامهنویسی مانند Python، جاوا و فناوریهای روز مانند سرویسهای وب، کوربا و RMI را میشناسد و میتواند در دو بخش تهیه نرمافزارهای سازگار با Grid و مدیریت سیستمهای Grid به ما کمک کند. البته نسخه ۲/۲ ابزار Globus در برخی موارد ضعفهایی نیز دارد.
این نسخه از سرویسهایی مثل مدیریت Life-Cycle یا چرخه زندگی نرمافزار و سیستمهای ذخیره و بازیابی پشتیبانی نمیکند. البته نسخه جدید Globus یعنی نسخه ۳ از آن جا که سعی داشته است با معماری باز سرویسهای Grid یا همان the Open Grid Services Architecture( OGSA) همخوانی داشته باشد، توانستهاست بسیاری از نقاط ضعف نسخه قبلی را رفع کند.
نگاهی بهاجزای Grid
اجزای تشکیل دهنده grid عبارتند از:
- رابط کاربر
- اجزای امنیت
- مدیریت کنترل کار سیستم (Workload management)
- زمانبند (Scheduler)
- مدیریت اطلاعات (Data Management)
- مدیریت منابع (Resource management)
در این قسمت بهصورت مختصر در مورد هر یک از این اجزا توضیح داده میشود. دسترسی به اطلاعات در Grid اهمیت شایانی دارد و رابط کاربر یا User Interface این مسئولیت مهم را عهدهدار است. رابط کاربر میتواند یا در برنامهای که کاربر از آن مستقیما استفاده میکند یا در ابزارهای مدیریتی Grid که مورد استفاده مدیر سیستم است، نقش ایفا کند. همانطور که شما برای استفاده از برق فقط وسیله برقی خود را به پریز برق متصل میکنید و لازم نیست از مکان منبع یا منابع اصلی این قدرت اطلاعی داشته باشید، استفاده کننده سیستم Grid نیز الزاماً نباید از پیچیدگیهای داخل این سیستمها مطلع باشد. مثال دیگر اینکه، شما از مرورگر وب جهت استفاده از اینترنت استفاده میکنید؛ بدون اینکه از مکان سرور وب سایت اطلاعی داشته باشید و تنها با وارد کردن آدرس سایت موردنظر، وب سایت آن در مرورگر نمایش داده میشود. اینترفیس Grid نیز باید مانند مرورگر باشد. یعنی استفادهکننده Grid نیز از پیچیدگیهای این سیستم اطلاعاتی ندارد و فقط با ورود یک پارامتر ورودی، یک خروجی دریافت میکند. (شکل ۱)
کامپیوترها در Grid به شبکه متصلند. این سیستمها همچنین میتوانند حاوی اطلاعات بسیار مهم و حساسی باشند. در نتیجه امنیت را میتوان یکی از مهمترین اجزایی این سیستمها دانست که خود حاوی اجزای فرعی مانند احراز هویت (authentication)، اختیارات (authorization) و رمزدهی (encryption) است.
مثلاً ابزار Globus حاوی یک Component به نام Grid Security Infrastructure( GSI) یا ساختار زیر بنایی امنیت Grid است که مسئولیت امنیت در محیط را برعهده دارد. GSI حاوی یک SSL باز است. در نتیجه وقتی یک استفاده کننده یک بار بهصورت مجاز به سیستم راه پیدا کرد، یک Proxy Certificate برای کاربر به وجود میآید و برای آن کاربر در نظر گرفته میشود. GSI در درگاه Grid قرار دارد. (شکل ۲)
استفاده کننده از یک سیستم Grid باید از منابع موجود و قابل دسترس در سیستم اطلاع داشته باشد. مدیریت کنترل کار سیستم یا Workload Management میتواند این کار را به راحتی انجام دهد. درخواستکننده سرویس میتواند با ارتباط با این قسمت از منابع آزاد سیستم، ظرفیت هر منبع و موقعیت آنها اطلاع حاصل نماید. در سیستمهای Grid که توسط Globus هدایت میشوند، زمانی که یک استفاده کننده شناسایی شد و برنامه موردنظر آن کاربر اجرا گردید، با توجه به نوع نرمافزار و پارامترهای ورودی کاربر، سیستم Grid بهدنبال منابع آزاد موجود در شبکه میگردد.
این وظیفه اغلب به عهده Brokerها است. Globus بهصورت عادی، Broker ندارند، اما از سرویسهایی مانند
(Grid Information Service) GIS و Monitoring and Discovery Service( MDS) را پشتیبانی میکنند که بهسیستم اطلاع میدهند کدام منبع یا منابع قادرند منابع خود را در اختیار بگذارند. شکل ۳ موقعیت این سرویسها را نمایش میدهد.
یکی دیگر از اجزایی که در سیستمهای Grid بسیار اهمیت دارد، زمانبند یا Scheduler است. در این سیستمها از آن جایی که باید هر کاری را کامپیوتر مشخصی بهعهده بگیرد و هر کامپیوتر باید مدت زمانی را در اختیار Grid قرار دهد، سیستم نیاز به یک زمانبند دارد. این زمانبند میتواند بسیار ساده باشد، اما اکثر زمانبندها باید بتوانند کارها را اولویتبندی کنند و سیستم را کنترل نمایند. در ابزار Globus زمانبندهایی با قابلیت بالا وجود ندارند، اما تعدادی سازوکار زمانبند وجود دارد که کار زمانبندهای دقیق را تا حدی انجام میدهد. شکل ۴ موقعیت زمانبندها را در Grid نشان میدهد.
جزء دیگر Gridها، مدیریت اطلاعات این سیستمها است که وظیفه ذخیرهسازی اطلاعات را در سیستم به عهده دارد. این بخش وظیفه محافظت از اطلاعات و جابهجایی این اطلاعات در تمامیدستگاههای متصل به Grid را عهدهدار است. جابهجایی و انتقال اطلاعات کار بسیار مشکلی است و اطلاعات باید از کانالی مطمئن منتقل شود.
با استفاده از ابزار Globus و بخش مدیریت اطلاعات این ابزار، میتوان محیطی امن برای انتقال این اطلاعات به وجود آورد. این قسمت از Globus به Grid Access to Secondary Storage) GASS) معروف است که امکاناتی مانندGridFTP را دربردارد که مانند FTP است، اما امکانات امنیتی مانند GSI را نیز دربرمیگیرد. در نتیجه وقتی یک کاربرProxy Certificate را داشتهباشد، میتواند از GridFTP جهت انتقال فایلها استفاده کند؛ بدون آن که نیاز داشته باشد دوباره به سیستم وارد شود. شکل ۵ موقعیت GASS را در Grid نشان میدهد.
از دیگر بخشهای مهم Grid، بخش مدیریت منابع است که به Grid Resource Allocation Manager) GRAM) شهرت دارد. این بخش وظایف هر دستگاه را مشخص میکند و باعث هماهنگی دستگاههای متصل به شبکه در انجامدادن امور محوله است. شکل ۶ محل قرار گرفتن GRAM را نشان میدهد.
Grid از دید برنامه نویسان
از دید برنامهنویسان، Grid از سازمانهای مجازیای تشکیل شده است که از پروتکلهای مخصوصی برای ارتباط با هم استفاده میکنند. این پروتکلها به استفادهکنندگان Grid و برنامهها اجازه میدهند سرویسهای خود را در محیطی کنترل شده و امن اجرا کنند. این سازمانهای مجازی میتوانند یک کامپیوتر شخصی، سروری قدرتمند یا کامپیوترهای متصل به شبکه باشند که از آن جا که پروتکل یکسانی دارند، میتوانند با هم متصل باشند و از منابع یکدیگر استفاده نمایند.
گروه جهانی Grid با ارائه معماری باز سرویسهای Grid یا Open Grid Services Architecture) OGSA) و جمعآوری استانداردهای باز، مانند زبان تعریف سرویسهای وب یا Web Services Description Language) WSDL) توانسته است استانداردی آسان و در عین حال دقیق برای سیستمهای Grid تعریف کند. از آن گذشته، OGSA از تجربیات به دست آمده از پروژههای بزرگی مانند Globus نیز بهرهمند است. شکل ۷ ساختار معماری این استاندارد را نشان میدهد.
استانداردهای باز و پروتکلهای این معماری راه تولید سرویسها را نشان میدهند. این سرویسها قلب Grid هستند و در واقع به استفادهکننده اجازه میدهند با Grid کار کند. این سرویسها عبارتند از:
- سرویس درخواستهای پردازنده مرکزی
- سرویس مدیریت کنترل کار سیستم و sessionها
- سرویس جستوجوی اطلاعات
- سرویس تعیین پهنای باند شبکه
- سرویس مدیریت اطلاعات
وقتی متخصصان Grid درباره شروع شدن یک سرویس صحبت میکنند، مثلاً شروع شدن سرویس جستوجوی اطلاعات، منظور یک نمونه یا Instance سرویس است که میتواند تکالیف بلند مدت یا موقتی داشته باشد. این سرویسها میتوانند بهصورت فعال یا غیر فعال باشند و زمان فعالیت را میتوان با زمانبند یا بهصورت اختیاری تعیین نمود. سرویسی خوب است که بتواند بهراحتی امکانات خود را در اختیار استفاده کننده قرار دهد. مثلاً وقتی یک وسیله الکترونیکی را به پریز برق متصل میکنید، برای شما هیچ اهمیتی ندارد که برق مورد نیازتان از کجا میآید؛ فقط میخواهید از برق استفاده کنید.
سرویس خوب Grid نیز سرویسی است که بتواند سرویس موردنظر استفادهکننده را بهراحتی دراختیار او قرار دهد و استفادهکننده بتواند به سادگی از آن استفاده کند. مثلا سرویس بانکاطلاعاتی در Grid باید بهصورتی عمل کند که استفاده کننده فقط یک جستوجو وارد کند و جواب جستوجوی خود را بگیرد؛ بدون اینکه از جایگاه و عملیات بانکاطلاعاتی خبر داشته باشد.
پیچیدگیها
اگر تصور میکنید سیستمهای Grid پیچیدهاند و ممکن است کار با آنها مشکل باشد، کاملاً درست فکر میکنید. مثلاً سیستمهای Grid باید بهسرعت قادر باشند منابع سیستمهای متصل بهآنها را شناسایی کنند و در عین حال نباید از سرعت و کارایی این سیستمها بکاهند. نکته بسیار مهم دیگری که مشخصاً ارتباطی به Grid ندارد ولی در این سیستمها تأثیرگذار است، ساختن نرمافزارهایی است که بتوانند با سیستمهای Gird کار کنند.
امروزه بیشتر نرمافزارها میتوانند روی کامپیوترهای شخصی یا حتی سرورها کار کنند. یعنی در واقع این نرمافزارها از یک پردازنده مرکزی استفاده میکنند، اما در سیستمهای Gird، ممکن است چند پردازنده این کار را بهعهده بگیرند و چند سیستم با هم کار کنند. البته هر سیستم یک کار را انجام میدهد. سپس نتایج محاسبات جمع میشود و به درخواست کننده سرویس برگشت داده میشود.
وقتی یک نرمافزار یا مجموعهای از نرمافزارها بخواهند از Grid استفاده کنند، مسئله بهاشتراک گذاشتن اطلاعات، تکه تکه کردن این اطلاعات، انتقال آن با امنیت کامل و مدیریت این اطلاعات کار دشواری است و کاربر Grid فقط اطلاعاتی را وارد میکند و نمیداند در داخل سیستم چه میگذرد. در نتیجه این سیستمها باید طوری این کار را انجام دهند که کاربران Grid بدون نگرانی از انتشار اطلاعات سری خود یا بروز اشتباه در محاسبات، به Grid اطمینان کنند.
امنیت سیستمهای Grid نیز بسیار حائز اهمیت است. کاربران این سیستمها باید از دسترسی بهمنابع ایشان در سیستم اطلاع حاصل کنند و بدانند کدام کاربر بهاطلاعات آنها دسترسی دارد. اضافه بر این، قابلیت اطمینان و سرعت این سیستمها بسیار اهمیت دارد. اگر سیستمهای Grid از سرعت کافی برخوردار نباشد، کاربران Grid از استفاده از این سیستمها دلسرد میشوند.
چگونه Grid بسازیم ؟
ممکن است پس از خواندن مطالبی که تا اینجا گفته شد، به این فکر افتاده باشید که آیا میتوانید خودتان یک Grid بسازید؟ البته که میتوانید! میتوانید از نرمافزارهای منبع آزاد یا اپنسورس استفاده کنید و یک محیط Grid بسازید. اولین قدم برای شروع، دانلود کردن ابزار Globus است. Globus همانطور که قبلاً نیز بحث شد، ابزاری است قدرتمند برای ایجاد و مدیریت محیط Grid. همچنین، به سرویسهایی برای ساختن Grid نیاز دارید که شامل سرویس مدیریت اطلاعات، سرویس پرسوجوی اطلاعات، درخواستکننده نیروی پردازشگر، زمانبند و سرویس تقسیمکننده پهنایباند باشند. این سرویسها بهسرویسهای Grid معروفند و در واقع همان سرویسهای وب هستند؛ البته با قابلیتهای بیشتر و مرتبط با Grid. برخی از کامپیوترهای شما که به شبکه Gird متصلند، میزبان سرویسهای Grid خواهند بود و کامپیوترهای دیگر از این سرویسها استفاده میکنند.
به علاوه، برای ساختن یک Grid بهابزارهایی نیز نیاز خواهید داشت: ابزارهای زیربنایی مثل زمانبندها، ابزارهای مدیریت منابع، مدیریت امنیتی و ابزارهای انتقال فایل مانند GridFTP که قبلاً توضیح داده شد. ابزار دیگری که حتما بهآن نیاز خواهید داشت، Grid Directory Services( GDS) است که فهرست سرویسهای آماده را در اختیار دارد. بهعلاوه، به APIهایی نیز نیاز دارید که برنامههای شما را با Grid هماهنگ سازند و بهبرنامههای شما امکان دهند در محیط Grid کار کنند. خواندن منابع زیر نیز شما را در یادگیری بیشتر Grid Computing یاری مینماید:
منابع:
انجمن برنامه نویسی .NET
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
www-128.ibm.com/developerworks/grid/library/grfuture.html