عکس پیش‌فرض نوشته

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

همانطور که میدانید، یک معماری سیستم های موجود، معماری سرویس گیرنده – سرویس دهنده است که در آن، سرویس گیرنده سرویسی را درخواست میکند و سرویس دهنده آن سرویس را ارائه میکند.

سیستم های توزیع شده

 

سرویس دهنده و سرویس گیرنده دور از هم قرار دارند و سرویس دهنده شامل سرویس ها و منابع مورد نیاز سرویس گیرنده است.

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

بنابراین سیستم های توزیع شده، امروزه نقش مهم و کلیدی دارند و به طور مداوم در حال تغییر و تحول هستند.

 

تعریف های گوناگونی از سیستم های توزیع شده ارائه شده است که هیچ کدام از آنها کامل نیستند و هیچ کدام نیز با دیگری سازگاری ندارد.

یک تعریف مختصر و کلی تر برای سیستم های توزیع شده، تعریفی است که در زیر آورده شده است:

سیستم های توزیع شده، کلکسیونی از کامپیوترهای مستقل است که از دیدگاه کاربران مثل یک سیستم منسجم عمل میکند.

 

این تعریف چندین جنبه مهم دارد. اولین جنبه این است که سیستم توزیع شده شامل قطعاتی (کامپیوترهایی) است که خودمختار (Autonomous) هستند.

جنبه دوم این است که کاربران (برنامه ها یا انسان ها) فکر میکنند که آنها تنها با یک سیستم سروکار دارند.

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

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

به همین ترتیب، هیچ فرضیه ای درباره روش اتصال کامپیوترها وجود ندارد.

 

به جای پرداختن بیشتر به تعریف ها، بهتر است به ویژگی های مهم سیستم های توزیع شده پرداخته شود.

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

ویژگی مهم دیگر این است که کاربران و کاربردها (برنامه های کاربردی یا Applications) میتوانند به طور یکنواخت و سازگار، با سیستم توزیع شده تعامل داشته باشند و مهم نیست که این تعامل در کجا و در چه زمانی انجام میگیرد.

 

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

سیستم توزیع شده دائماً مهیاست، گرچه ممکن است بخشی از آن موقتاً از دور خارج شده باشد.

کاربران و کاربردها، به این موضوع کار ندارند که بخش هایی جایگزین یا تعمیر شده اند یا بخش های جدیدی اضافه شده اند تا به کاربران و کاربردهای دیگری سرویس دهند.

 

به منظور از پشتیبانی از کامپیوترها و شبکه های غیر یکسان و نیز ارائه دیدگاه تک سیستمی، سیستم های توزیع شده معمولاً به وسیله لایه ای از نرم افزار، سازماندهی میشوند؛ یعنی، به طور منطقی بین لایه بالاتر که شامل کاربران و کاربردهاست و لایه زیرین که شامل سیستم عامل و امکانات ارتباطی پایه است قرار میگیرد.

بر این اساس، چنین سیستم توزیع شده ای، میان افزار (middleware) نام دارد.

در شکل زیر میتوانید توضیح تصویری و نموداری میان افزار را مشاهده کنید.

لازم به ذکر است که لایه میان افزار، در چند ماشین بسط می یابد و برای هر کاربرد، نرم افزار یکسانی را ارائه میکند.

میان افزار در سیستم های توزیع شده

 

در تصویر فوق، چهار کامپیوتر شبکه شده و سه کاربرد را نشان میدهد که کاربرد B در کامپیوترهای 2 و 3 توزیع شده است.

هر کاربرد، واسط یکسانی دارد.

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

علاوه بر این، تا جایی که ممکن است، تفاوت ها در سخت افزار و سیستم های عامل را از هر کاربرد مخفی میکند.

 

 

اهداف سیستم های توزیع شده

صرفاً به این دلیل که میتوان سیستم های توزیع شده را ساخت، الزاماً به معنای خوب بودن این ایده نیست. با فناوری موجود، میتوان چندین CDROM روی یک کامپیوتر شخصی قرار داد.

فقط به دلیل اینکه میتوان چنین کاری را انجام داد، اقدام به این کار منطقی نیست.

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

 

1- دسترسی به منابع

هدف اصلی سیستم توزیع شده این است که کاربران (و کاربردها) به راحتی به منابع راه دور دسترسی داشته باشند و آنها را به روش کنترل شده و موثر به اشتراک بگذارند.

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

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

به عنوان مثال اشتراک یک چاپگر بین چندین کاربر در یک اداره، اقتصادی تر از این است که برای هر کاربر یک چاپگر خریداری شود.

 

 

2- شفافیت توزیع

یک هدف مهم سیستم توزیع شده، پنهان سازی این حقیقت است که فرآیندها (Processes) و منابع آن، به طور فیزیکی در چندین کامپیوتر توزیع شده اند.

سیستم توزیع شده ای که قادر است خودش را طوری به کاربران و کاربردها ارائه کند که گویی فقط یک سیستم کامپیوتری است، شفاف (Transparent) نام دارد.

برای بررسی کلی این موضوع می بایست در ابتدا بررسی کنیم که چه نوع شفافیت هایی در سیستم توزیع شده وجود دارد و پس از آن بایستی به این پرسش عمومی بپردازیم که آیا همیشه نیاز به شفافیت وجود دارد یا خیر.

بررسی این دو موضوع بسیار طولانی و خارج از بحث ماست. البته سعی میکنیم در آینده و در صورت نیاز کاربران این موضوع را نیز به طور کامل و مفصل مورد بررسی قرار دهیم.

 

3- باز بودن

هدف مهم دیگر سیستم های توزیع شده، باز بودن است.

سیستم توزیع شده باز، سیستمی است که سرویس را بر اساس قوانین استانداردی ارائه میکند که نحو (Syntax) و معنای آن سرویس ها را توصیف میکند.

به عنوان مثال، در شبکه های کامپیوتری، قوانین استاندارد، فرمت، محتویات و معنای پیام های ارسالی و دریافتی را اداره میکند. این قوانین در پروتکل ها قرار میگیرند.

در سیستم های توزیع شده، سرویس ها معمولاً از طریق واسط ها (Interface) مشخص میشوند که اغلب در زبان تعریف واسط (IDL) تشریح میشوند.

تعریف های واسط که در IDL نوشته شدند، تقریباً همیشه نحو سرویس ها را مشخص میکنند. به عبارت دیگر، آنها دقیقاً اسامی توابعی را مشخص میکنند که به همراه انواع پارامترها، مقادیر برگشتی، استثناهایی که قابل صادر شدن هستند و … فراهم میشوند.

بخش دشوار، بیان دقیق عملکرد سرویس ها، یعنی معنای واسط هاست.

در عمل، این مشخصات توسط یک زبان طبیعی به صورت رسمی بیان میشود.

 

4- توسعه پذیری

نظر به جهانی بودن اتصال از طریق اینترنت، توسعه پذیری (Scalability)، یکی از مهمترین اهداف طراحی سازندگان سیستم های توزیع شده است.

توسعه پذیری سیستم را حداقل در سه بعد مختلف میتوان اندازه گیری کرد.

اولاً، سیستم میتواند از نظر اندازه قابل توسعه باشد، یعنی به راحتی میتوان کاربران و منابعی را به آن اضافه نمود.

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

ثالثاً، سیستم میتواند از نظر سرپرستی قابل توسعه باشد، یعنی حتی اگر بسیاری از سازمان های سرپرستی مستقل را دربر گیرد، مدیریت آن آسان می باشد.

متأسفانه، سیستمی که در یک یا چند بعد از این ابعاد توسعه پذیر باشد، با توسعه سیستم، کارآیی آن کاهش می یابد.

 

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

این آموزش بیش از ۳ سال قبل ارسال شده و اکنون در لیست به‌روزرسانی‌های سایت قرار دارد. اگر پیشنهاد یا انتقادی برای بهبود آموزش دارید، خوشحال می‌شیم به ما اطلاع بدهید.