پردازش توزیع شده یا Distributed Computing چیست؟
یادداشت ویراستار: اصل این مطلب در بهمن 1397 نوشته شده بود و در بهمن 1399 دوباره بررسی و بهروز شد. همچنین در اسفند 1399 توسط کارشناسان سرور و شبکه فالنیک، بررسی و تایید شده است..
در این مقاله به موضوع سیستم های توزیع شده و مزایا و معایب و کاربردهای آنها میپردازیم و با انواع سیستم های توزیع شده آشنا میشویم.
- محاسبات توزیع شده چیست؟
- توزیع Task ها در Distributed Computing چگونه انجام میشود؟
- کاربرد سیستم های توزیع شده
- مزایا و معایب سیستم های توزیع شده
- Distributed file system چیست؟
- پایگاه داده توزیع شده چیست؟
محاسبات توزیع شده چیست؟
میدانیم که به صورت سنتی، پردازشها روی یک ماشین انجام میشود. هر روز از کامپیوترها، گوشیها و دیگر دستگاههای پردازشی استفاده میکنیم یعنی ورودی به آنها میدهیم و خروجی میگیریم. اما در پروژههای بزرگ و پیچیده مانند پروژههای 3D Graphic و Video Rendering، حل مسایل پیچیده علمی، شبیه سازی ها، هوش مصنوعی، یادگیری ماشین، و در کل، آنالیز بیگ دیتا و کلان داده، این راهکارهای معمول و روزمره ناکارآمد هستند و قدرت پردازشی مورد نیاز شما را تامین نمیکنند. چه میشد اگر برای افزایش کارایی و بهرهوری بتوان مولفههای نرم افزاری سیستم را بین چند کامپیوتر به اشتراک گذاشت؟ مدل محاسبات توزیع شده – Distributed Computing پاسخ شما را خواهد داد.
کامپیوتر، سرعت بسیار کمی در حل مسایل بزرگ دارد و اینجاست که Distributed Computing وارد عمل میشود. ایده سادهای است. میتوان مساله پیچیده و بزرگ را به چند قسمت کوچک، تقسیم و بین چند کامپیوتر توزیع کرد. پس هر کامپیوتر فقط یک قسمت کوچک از کار را که Job نامیده میشود باید انجام دهد. همه کامپیوترها به صورت هماهنگ کار میکنند و در نهایت، پردازش بزرگ را در زمان بسیار کمی به دست خواهید آورد.
نامناسبترین Task ها برای Distributed Computing
این ایده از نظر مفهومی بسیار ساده است اما وقتی نوبت به انتخاب Task ای میرسد که واقعا مناسب Distributed Computing باشد، باید نکاتی را رعایت کرد.
برخی Task ها برای Distributed Computing خیلی مناسب نیستند. در ارتباط با برخی Task های پیچیده، ممکن است در قدم اول با تقسیم آن به قسمتهای کوچک و توزیع آنها بین کامپیوترها مشکلاتی داشته باشید خصوصا اگر هر پردازش نیاز به نتیجه پردازش قبلی داشته باشد یعنی الگوی سریالی موجود، باعث میشود توزیع محاسبات، سختتر شود.
مناسبترین Task ها برای Distributed Computing
مناسبترین Task ها برای Distributed Computing، کارها و Task های موازی هستند. چنین Task هایی نیاز به تعداد زیادی عملیات پیچیده دارند اما بسیاری از آنها به صورت مجزا و مستقل از بقیه انجام میشوند. یعنی میتوانید هر یک از این Task ها را به سادگی توزیع کنید چون هر Task متکی بر نتیجه Task دیگر نیست. پس تمامی این Task ها در یک زمان و بدون نیاز به دیگر Task ها قابل انجام هستند.
توزیع Task ها در Distributed Computing چگونه انجام میشود؟
شما یک کامپیوترِ هاست و آرایهای از کامپیوترها دارید که در Distributed Computing استفاده میشود. کامپیوترِ هاست همان کامپیوتری است که شما Task را به آن میدهید و برنامه اصلی را اجرا میکنید. این کامپیوتر، کار تقسیم به بخشهای کوچک را انجام میدهد و سپس این Task ها یا Job ها را بین بقیه کامپیوترها توزیع میکند. هر کامپیوتر، پردازش این Job ها را انجام داده و نتیجه را برمیگرداند. کامپیوترِ هاست، نتیجه این Task های مجزا را میگیرد و با قرار دادن همه آنها در کنار هم، نتیجه نهایی را ایجاد میکند.
ارتباطات بین کامپیوترها اغلب روی شبکهای اتفاق میافتد که مشابه آن را در منازل خود داریم اما ممکن است این ارتباطات به وسیله باس روی یک بورد اتفاق بیفتد.
نکته جالبی که باید به آن توجه شود این است که آرایه کامپیوترها که نتیجه این پردازش توزیع شده را تولید میکنند، ممکن است کامپیوتری قدیمی باشند یعنی میتوان از کامپیوترهای دور و بر خود که چندان استفادهای برایتان ندارند به عنوان جزیی از شبکه Distributed Computing یا پردازش توزیع شده استفاده و تنظیم کنید.
برای استفاده از خدمات تعمیر لپ تاپ روی لینک بزنید.
کاربرد سیستم های توزیع شده
کاربرد سیستم های توزیع شده و برنامههای محاسبات توزیع شده عبارتند از:
1- در شبکه های مخابراتی
- شبکه تلفن و شبکه موبایل
- شبکههای کامپیوتری مانند اینترنت
- شبکه های wireless sensor
- الگوریتم های مسیریابی
2- اپلیکیشنهای شبکه
- شبکه های World Wide Web و peer-to-peer
- بازی های آنلاین بین چندین گیمر با حجم بالا و واقعیت مجازی
- پایگاه داده توزیع شده و سیستم های مدیریت پایگاه داده توزیع شده
- سیستم فایل های شبکه
- Cache توزیع شده مثل burst buffers
- سیستم های پردازش اطلاعات توزیع شده مانند سیستم های بانکی و سیستم های رززرو خطوط هوایی
3- Real-Time Process Control
- سیستم های کنترل هوایی
- سیستم های کنترلر صنعتی
4- محاسبات موازی
- محاسبات علمی شامل محاسبات کلاستر، محاسبات grid، رایانش ابری
- رندرینگ توزیع شده در گرافیک کامپیوتر
امنیت در سیستم های توزیع شده
برای تامین امنیت اطلاعات منتقل شده از یک Node به Node دیگر باید از روش مناسب انتقال استفاده شود و دیتا به فرمتهای غیرقابل خوانش و رمزگذاری شده باشد. استفاده از الگوریتم رمزگذاری single key یا public key برای محافظت از محتوای پیام و مخفی نگه داشتن اطلاعات هنگام فرآیند انتقال، روش مناسبی است. این کار با استفاده از الگوریتمهای RSA یا AES انجام میشود.
همچنین از پروتکلهای احراز هویت و مکانیزم کنترل دسترسی نیز استفاده میشود.
درجه شفافیت در سیستم های توزیع شده
transparency در distributed system شامل جنبههایی از سیستم توزیع شده است که از کاربر پنهان میماند. مثلا هنگام دریافت اطلاعات از یک Node، لازم نیست شما تعیین کنید این اطلاعات از چه سیستمی برای شما تامین شود بلکه از سیستم توزیع شده میخواهید اطلاعات مورد نیاز را تامین کند و این سیستم توزیع شده است که تصمیم میگیرد کدام سیستم برای این کار باید پردازش شود.
مثلا در سیستم های توزیع شده مبتنی بر وب شما با داشتن آدرس وب سایت و نام دامنه درخواست خود را برای دیدن صفحه وب مورد نظر به مرورگر ارسال میکنید و مرورگر صفحه منطبق با درخواست شما را باز میکند. در این فرآیند شما از آدرس آی پی و مک آدرس خبر ندارید.
شما بسته به نیازهای خود میتوانید درجه شفافیت را در سیستم های توزیع شده و در سطوح مختلف تعریف کنید.
مهاجرت کد در سیستم های توزیع شده
در سیستم های توزیع شده علاوه بر انتقال دیتا، انتقال برنامه حتی در حین اجرا هم ممکن است که البته هزینه بالایی دارد و بهتر مزایای زیر را برای سیستم فراهم کند:
- افزایش کارایی در سیستم فراهم شود.
- پردازش در نزدیکی محل قرارگیری دیتا، بهتر باشد.
- انعطاف پذیری بیشتر برای سیستم لازم دارید.
جابجایی برنامه ها بین سیستم ها با هدف اجرا در مقصد مهمترین هدف مهاجرت کد در سیستم های توزیع شده است و بسته به موارد زیر انواع مختلفی دارد:
- نوع جابجایی: جابجایی ضعیف و جابجایی قوی
- نوع شروع مهاجرت: آغاز شده توسط فرستنده و آغاز شده توسط گیرنده
- نوع اجرا: همانند سازی راه دور و مهاجرت فرآیند
پیشنهاد این است که با توجه به نیازهای پردازشی خود، از سرورهای قوی و مناسب استفاده کنید.
مزایا و معایب سیستم های توزیع شده
مزایای سیستم های توزیع شده عبارتند از:
- قابلیت اطمینان و fault tolerance بالا؛ اگر سروری کرش کند، تاثیری روی سرورهای دیگر ندارد.
- توسعه پذیری؛ به تعداد مورد نیاز میتوانید ماشین اضافه کنید.
- انعطاف پذیرینصب و پیاده سازی و دیباگ کردن سرویس های جدید را فراهم میکند.
- سرعت محاسبه بالا؛ چون قدرت پردازش تعدادی کامپیوتر بشتر است.
- Openness است یعنی دسترسی به صورت لوکال و ریموت فراهم است.
- کارایی بالا؛ در مقایسه با کلاسترهای شبکه متمرکز هم کارایی بالاتری دارد هم هزینه بهتری لازم است.
معایب سیستم های توزیع شده عبارتند از:
- عیب یابی مشکل است چون چند سرور مطرح است.
- پشتیبانی نرم افزاری کم است و این مهمترین مشکل سیستم های توزیع شده است.
- هزینه های بالا در زیرساخت شبکه مثل انتقال و لود بالا و گم شدن اطلاعات
- مشکلات امنیتی، خاصیت سیستم های باز این است که امنیت دیتا و ریسک های اشتراک گذاری وجود دارد.
آشنایی با پلتفرم هادوپ – Hadoop
هادوپ یا Hadoop یکی از پلتفرم های معروف و متن باز است که در سیستم های توزیع شده یا Distributed System ها استفاده میشود. در پروژههای بزرگ باعث کاهش هزینه و کاهش زمان لازم برای رسیدن به نتیجه میشود که البته از مزایای Distributed Computing است. هادوپ از الگوریتم نگاشت-کاهش یا MapReduce استفاده میکند.
چند مورد از کاربردهای هادوپ عبارتند از:
- Statistical Analysis
- ETL Processing
- Business Intelligent
- Machine Learning
- Video Rendering
- Simulation
Distributed file system چیست؟
DFS مخفف Distributed File System و به معنی سیستم فایل های توزیع شده است. یعنی فایل سیستم های توزیع شده همان طور که از نامشان پیداست، یعنی توزیع یک سیستم فایل روی چند فایل سرور یا چند محل. این قابلیت شرایطی فراهم میکند که انگار تمام فایل سیستم ها در یک محل قرار دارند.
هدف اصلی DFS این است که به کاربرِ سیستم هایی که به صورت فیزیکی توزیع شدهاند این امکان را میدهد که اطلاعات و منابعش را با استفاده از سیستم فایل های رایج به اشتراک گذارند. ورک استیشن ها و mainframeها به وسیله شبکه LAN میتوانند به عنوان سیستم فایل های توزیع شده پیکربندی شوند.
دو مولفه اصلی در سیستم فایل های توزیع شده Location Transparency و Redundancy است. با وجود این دو، اگر خرابی پیش آید به راحتی دسترسی به دیتاها فراهم میشود.
پایگاه داده توزیع شده چیست؟
پایگاه داده توزیع شده یعنی پایگاه دادهای که دارای دو یا چند محل مختلف برای فایل ها است و این محلها میتوانند در یک شبکه باشند و یا در شبکههای کاملا متفاوت. بخشهای دیتابیس در مکانهای فیزیکی متفاوت ذخیره میشوند و پردازش بین چندین Node دیتابیس انجام میشود.
سیستم مدیریت متمرکز دیتابیس توزیع شده – DDBMS به صورت منطقی دیتا را یکپارچه میکند در نتیجه انگار همگی در یک محل قرار دارند. این سیستم به صورت دورهای تمام دیتا ها را همگام سازی میکند و آپدیتها و حذفیهای انجام شده را اعمال میکند.