بدلیل اینکه یکی از مهمترین معایب سیستمهای توزیع شده، پیچیدگی در طراحی و پیاده سازی این نوع از سیستمها میباشد و آشنا بودن ما با تعاریف، خصوصیات، مزایا، معایب، اهداف و اصطلاحات موجود در این نوع سیستمها، باعث کاهش این پیچیدگیها و مدیریت و کنترل بیشتری بر روی این پیچیدگیها میشود، پیش نیاز ورود به دنیای سیستمهای توزیع شده و استفاده از ابزارهای مرتبط با آنها، آشنا بودن با مفاهیم فوق است.
در این بخش تعاریف، خصوصیات، مزایا و معایب مرتبط با این نوع سیستمها بررسی میشوند.
تعریف سیستمهای توزیع شده
تعاریف مختلفی توسط اشخاص و گروههای مختلف، از سیستمهای توزیع شده وجود دارد. در اینجا سعی شده که اکثر این تعاریف معرفی شوند؛ بگونهای که با ارائه نکات کلیدی این تعاریف به درک بهتری از خصوصیات سیستمهای توزیع شده برسیم.
تعاریف سیستمهای توزیع شده
تعریف اول: سیستمهای توزیع شده از مجموعهای از سخت افزارها و نرم افزارها که برای رسیدن به یک هدف واحد از طریق شبکه با یکدیگر در ارتباطند تشکیل شده.
تعریف دوم: یک مجموعه از Computerهای مستقل که از نظر کاربر یک Computer و یک سیستم واحد و منسجمند.
تعریف سوم: سیستمهای توزیع شده در واقع هنری هستند که بوسیله آنها میتوانید مشکلاتی را که در یک کامپیوتر وجود دارند، با استفاده از چند کامپیوتر رفع کنید و معمولا به این دلیل انتخاب میشوند که این مشکلات توسط یک کامپیوتر رفع نمیشوند.
تعریف چهارم: زیر سیستمهایی که بصورت همزمان میتوانند پردازش یک سیستم بزرگ را انجام دهند؛ البته همزمانی که در آن مانند سیستمهای Parallel از یک حافظه مشترک استفاده نشود.
تعریف پنجم: مجموعه ای از پردازشهای مرتبط به هم، بصورتی که هر پردازش از حافظه داخلی مرتبط با خودش استفاده کند و تمام این پردازشها از طریق Message passing در سطح شبکه با یکدیگر در ارتباطند.
تعریف ششم: تقسیم بندی وظایف یک سیستم بزرگ به زیرسیستمهایی که در سخت افزارهای مجزا اجرا میشوند و کاربر هیچ تصوری از وجود این زیر سیستمها ندارد.
در تعاریف فوق نکات کلیدی وجود دارد که میتوانند خصوصیات سیستمهای توزیع شده نیز باشند و با در نظر گرفتن آنها میتوانید به درک بهتری از سیستمهای توزیع شده برسید.
نکات کلیدی یا خصوصیات سیستمهای توزیع شده
1- داشتن یک هدف واحد در سیستمهای توزیع شده، زیر سیستمهایی که از نظر کاربر یک سیستم واحد و متمرکزند: این یکی از خصوصیات و نکات کلیدی سیستمهای توزیع شدهاست که تمام اجزاء و زیرسیستمها در راه رسیدن به یک هدف واحد با یکدیگر در ارتباط اند. ارتباطی که باعث همکاری آنها میشود و همکاری که باید بصورت کامل از دید کاربر مخفی بماند (داشتن یک هدف واحد یکی از تفاوتهای سیستمهای توزیع شده با Cloud distributed systemها میباشد. چون در Cloud distributed systemها لزوما تمام اجزا برای رسیدن به یک هدف مشترک با یکدیگر کار نمیکنند).
2- کامپیوترهای مستقل، حافظههای داخلی جداگانه، عدم وجود حافظه مشترک: یکی از مهمترین تفاوتهای سیستمهای توزیع شده با سیستمهای Parallel، عدم وجود حافظه مشترک بین پردازشهای جداگانه است. یعنی در این نوع سیستمها، هر زیرسیستم در یک کامپیوتر مجزا که حافظه داخلی خودش را دارد اجرا میشود.
3- تقسیم بندی وظایف: که یکی از نکات کلیدی این نوع سیستمها میباشد. تقسیم بندی میتواند به هر دلیلی که شما درنظر میگیرید صورت بپذیرد. دلایلی برای بالا بردن کارآیی، امنیت، در دسترس بودن، یا حتی دلایل مربوط به Business سیستم شما.
4- ارتباط از طریق شبکه، ارتباطی که از طریق Message passing صورت میپذیرد: این خصوصیت در واقع پایه تمام تعاریف سیستمهای توزیع شدهاست. در سیستمهای توزیع شده همه چیز از ارتباطهایی که از طریق شبکه صورت میپذیرد، شروع میشود .
مزایای استفاده از سیستمهای توزیع شده
1- کارآیی بسیار بالاتر: بدلیل همزمان اجرا شدن کارها در سخت افزارهای مختلف، کارآیی این نوع سیستمها بسیار بیشتر از سیستمهای متمرکز است.
2- قابلیت همکاری بیشتر: بدلیل اینکه این سیستمها ذاتا توزیع شده هستند، با کمترین هزینه و پیچیدگی میتوانند با سایر سیستمها همکاری لازم را داشته باشند.
3- قابلیت در دسترس بودن و اطمینان بیشتر: در این سیستمها با روشهای مختلفی مانند replication، به راحتی میتوان این دو قابلیت را در بالاترین سطح قرار داد.
4- مقیاس پذیری: مقیاس پذیری در این سیستمها با قرار دادن کامپوننتهایی که قابلیت استفاده مجدد بالایی را دارند در سرورهای جدید به راحتی و بدون از دسترس خارج شدن سیستم صورت میپذیرد.
5- قابلیت گسترش: برای گسترش سیستم و اضافه کردن نیازمندیهای جدید در این سیستمها، به راحتی میتوان کامپوننتها و زیرسیستمهای جدیدی را پیاده سازی کرد و بدون از دسترس خارج شدن سیستم و به گونهای که به راحتی با سایر قسمتهای موجود در ارتباط باشند، آنها را به سیستم اضافه کرد.
6- بهره وری بالاتر و زمان توسعه کمتر: بدلیل تقسیم بندی قسمتهای بزرگ به قسمتهای کوچکتر، تیمهای مختلف میتوانند بصورت همزمان قسمتهای کوچک را توسعه دهند.
7- قابلیت استفاده مجدد بسیار بالا: در این نوع سیستمها به راحتی میتوانید از یک زیرسیستم یا کامپوننت خاص که یکبار پیاده سازی شده و در سخت افزار جداگانهای اجرا شده، در تمام Applicationها استفاده کنید.
8- کاهش هزینه: در مواردی مانند قابلیت استفادهی مجدد بالا و توسعه پذیری سیستم، میتوانند باعث کاهش هزینهها شوند (در صورت انتخاب نادرست این نوع سیستم، این مزیت میتواند تبدیل به یکی از معایب سیستم شود).
9- امنیت: بدلیل اینکه هر زیرسیستم در یک سخت افزار جداگانه اجرا میشود که مکان آن از قبل مشخص نیست و همچنین تقسیم بندی قسمتهایی که نیاز به امنیت بالایی دارند، میتواند بر اساس نیاز و در سخت افزارهایی که حتی به اینترنت هم متصل نیستند، صورت بپذیرد. این نوع سیستم میتواند از امنیت بالایی برخوردار باشد (البته در صورت طراحی نادرست، امنیت میتواند بعنوان یکی از معایب این نوع سیستمها نیز مطرح شود).
معایب استفاده از سیستمهای توزیع شده
1- پیچیدگی در انتخاب، طراحی و پیاده سازی سیستمهای توزیع شده: یکی از اصلیترین معایب سیستمهای توزیع شده، پیچیدگیهایی است که در انتخاب، طراحی و پیاده سازی آنها وجود دارد. به دلیل پیچیدگیهایی که در هریک از این قسمتها وجود دارد، در صورت اتخاذ تصمیمات نادرست، در هر یک از این قسمتها اکثر مزایای آنها میتوانند تبدیل به معایب این نوع سیستمها شوند.
2- بالا رفتن زمان طراحی و پیاده سازی: بدلیل بوجود آمدن مفاهیم جدید و پیچیدگی که در این نوع سیستم وجود دارد و همچنین بدلیل کم بودن نیروی متخصص در این نوع سیستم، زمان توسعه آنها میتواند بیشتر از سیستمهای متمرکز باشد.
3- هزینه طراحی و پیاده سازی بیشتر: دلایل 1 و 2 میتوانند باعث بالا رفتن هزینههای طراحی و پیاده سازی این نوع سیستمها شوند.
4- هزینههای بیشتر مرتبط با شبکه: در این نوع سیستمها بدلیل استفاده بیشتر از منابع، مانند سخت افزارها و ابزارهای مرتبط با شبکه، هزینههای مرتبط با استفاده از منابع، مانند برق و شبکه بیشتر از سیستمهای متمرکز است.
5- کاهش امنیت: توزیع نادرست منابع سیستم در سخت افزارهای متفاوت و مدیریت نادرست این منابع باعث کاهش امنیت این نوع سیستمها میشود.
6- مدیریت دشوارتر: بدلیل اینکه سیستمهای توزیع شده از زیرسیستمهای زیادی تشکیل شده و هر یک از این زیر سیستمها در سخت افزارهای متفاوتی اجرا شدهاند، مدیریت و سازماندهی این نوع سیستمها دشوارتر از سیستمهای متمرکز است.