سیستم های توزیع شده چیست؟ – تعریف، انواع و مزایا به زبان ساده


«سیستم توزیع شده» (Distributed Systems) که با نام «رایانش توزیع شده» نیز شناخته میشود، مجموعهای متشکل از اجزای مستقل از هم است که بر روی کامپیوترهای متعددی قرار گرفتهاند. این اجزا، به منظور دستیابی به اهدافی مشترک، در قالب تبادل پیام، با یکدیگر تعامل دارند. بدین ترتیب «سیستم های توزیع شده»، در نظر کاربرِ نهایی بهعنوان «رابط» یا کامپیوتری واحد، ظاهر میشوند. در این مطلب از مجله فرادرس، یاد میگیریم که ماهیت سیستم های توزیع شده چیست. همچنین سعی کردهایم تا با معرفی انواع این نوع سیستمها، با معماریها، مزیا و معایب هرکدام نیز تا حد امکان و بهطور جامع آشنا شویم.
مقدمه ای بر سیستم های توزیع شده
با مقرونبهصرفه شدن سیستمهای کامپیوتری و قابل اعتماد بودن آن، بسیاری از کارهایی که پیش از این بهصورت دستی انجام میشد، با راهکارهای کامپیوتری، جایگزین شدند.
با اینحال، زمانی رسید که تقاضا برای محاسبات، از تواناییهای فناوری موجود در آن زمان پیشی گرفت. برای مقابل با این مسئله، زمانیکه سیستمهای مختلف با مشارکت یکدیگر برای حل مسئله خاصی تلاش میکردند، نیاز به محاسبات بهتر و سریعتری احساس میشد و اینجا بود که «سیستم های توزیع شده» بهوجود آمدند. اما این نوع سیستمها در ابتدا، از نظر هزینه، گران بودند و علاوه بر پیکربندی پیچیده، مدیریت آنها نیز دشوار بود. هدفی که این سیستمها بهدنبال آن هستند این است که بتوانند استفاده کارآمد از منابع و اطلاعات را به حداکثر برسانند و در عین حال از بروز خرابی جلوگیری کنند. بهطوریکه اگر یکی از سیستمها از کار بیفتد (مثلاً در صورت خرابی)، بر «دسترسی پذیری» (Availability) سرویس، تأثیری نخواهد گذاشت.
با قابلیتهای گسترده «SaaS»، بهکارگیری سیستمهای توزیع شده، برای مشاغل کوچک و بزرگ سادهتر و مقرونبصرفهتر شده است. «نرمافزار بهعنوان یک سرویس» (Software as a service | SaaS)، مجوز و مدلی برای تحویل نرمافزار است که بهصورت متمرکز میزبانی میشود. برنامههای «SaaS»، معمولاٌ از طریق مرورگر، در دسترس کاربر قرار میگیرند. در دنیای امروز بیش از هر زمان دیگری شاهد دادههای توزیع شده هستیم و برنامههای کاربردی امروزی، دیگر بهصورت مجزا اجرا نمیشوند و اکثریت محصولات و اپلیکیشنها، به سیستمهای توزیع شده متکی هستند.

«سیستم های توزیع شده»، پیشرفت مهمی در صنعت «فناوری اطلاعات» (IT) و «علوم کامپیوتر» (Computer Science)، بهویژه از نظر افزایش تعداد مشاغل (بزرگ و پیچیده) و کارهایی که تنها با یک کامپیوتر میشد به حل آن پرداخت، محسوب میشوند. سیستمهای توزیع شده میتوانند خطر (ریسک) خرابی را کاهش و ظرفیت «تحملِ خطا» را افزایش دهند، همچنین قابلیت اطمینان را نیز تقویت کنند.
سیستم توزیع شده، متشکل از چندین کامپیوتر است که بهواسطه شبکهای، بههم متصلاند و علاوه بر تعامل با یکدیگر، اجزای خود را (سختافزار یا نرمافزار) به اشتراک میگذارند. این کامپیوترها برای همگامسازی و تکمیل وظایف مختلف در چندین منبع، ارتباط برقرار میکنند و منابع یا اجزاء را به اشتراک میگذارند.
با رشد روزافزون فناوری و پیشرفتهایی که امرو شاهد آن هستیم، «سیستمهای توزیع شده» (Distributed Systems)، رفتهرفته علاقهمندان بیشتری را به سمت خود جذب میکنند و محبوبیت آن نیز نزد کسب و کارها بیشتر میشود. شرکتهای پیشرو در این زمینه، برای مدیریت درخواستهای بسیار زیاد (در مقیاس میلیارد) و همچنین برای اینکه ارتقا بدون بروز اختلال (از کار افتادگی) را تجربه کنند، سیستمهای توزیع شده پیچیدهای را ایجاد کردهاند.
سیستم های توزیع شده چیست ؟
سیستم های توزیع شده را میتوان بهعنوان «مجموعهای از کامپیوترها» در نظر گرفت که با هم کار میکنند تا از دید کاربر نهایی بهعنوان یک کامپیوتر به نظر بیایند. تمامی دستگاههای توزیع شده دارای «وضعیتی مشترک» (Shared State) هستند و بهصورت همزمان کار میکنند. در صورت خرابی هر کدام از این دستگاهها، آسیبی متوجه کل سیستم نمیشود که اصطلاحاً به آن «Fail Independently» میگویند.
این کامپیوترهای مستقل و خودمختار، برای برقراری ارتباط با هم، تبادل اطلاعات و اشتراک گذاری آن، بهوسیله شبکهای بههم متصل میشوند. توجه داشته باشید که سیستمهای توزیع شده میبایست در شبکهای مشترک قرار گیرند تا اجزای خود را بههم متصل کنند. این اتصال میتواند بهوسیله کابلهای فیزیکی یا آدرس آیپی انجام شود.

مفاهیم سیستم های توزیع شده چیست ؟
مهمترین مفاهیم رایانش توزیع شده را میتوان بهصورتی که در ادامه آمده است، بیان کرد.
- اشتراکگذاری منابع (Resource sharing): به سختافزار، نرمافزار یا دادهای اشاره میکند که میتوان به اشتراک گذاشت.
- باز بودن (Openness): این نکته را بیان میکند که در توسعه و اشتراکگذاری نرمافزار طراحی شده، تا چه اندازه آزادی داریم است.
- همزمانی (Concurrency): کامپیوترهای متعدد میتوانند عملیات یکسانی را بهطور همزمان پردازش کنند.
- مقیاسپذیری (Scalability): به افزایش تواناییهای محاسباتی و پردازشی وقتیکه به کامپیوترهای متعددی گسترش مییابند، اشاره دارد.
- تحملپذیری در برابر خطا (Fault tolerance): میزان سرعت و سهولت در تشخیص «خرابی» (Failures) و همچنین بازیابی آن در بخشهایی از سیستم را بیان میکند.
- شفافیت (Transparency): میزان دسترسی یک گره برای پیدا کردن و تعامل با سایر گرههای موجود در سیستم چقدر است.
سیستمهای توزیعشده کنونی، بهنحوی تکامل یافتهاند که شامل فرآیندهای مستقلی باشند. فرایندهاییکه ممکن است روی یک کامپیوتر (از نظر فیزیکی) اجرا شوند، اما با تبادل پیام، با یکدیگر تعامل داشته باشند.

نمونه هایی از سیستم های توزیع شده چیست ؟
برخی از نمونههای سیستمهای توزیع شده در زمینههای گوناگون را در ادامه آوردهایم.
سیستم های توزیع شده در شبکه کامپیوتری چیست؟
اولین نمونه از «سیستمهای توزیع شده»، به دهه ۵۰ (۷۰ میلادی)، یعنی همزمان با پیدایش «اِتِرنت» (Ethernet) و ظهور «شبکههای محلی» (Local Area Networks) باز میگردد. برای نخستین بار بود که کامپیوترها میتوانستند تا پیامهایی را به دیگر سیستمها بهواسطه «آدرس آیپی» (IP address) محلی، ارسال کنند. شبکههای «نظیر به نظیر» (Peer-to-peer | P2P)، توسعه و تکامل یافتند و «پست الکترونیکی» (E-mail) و بهدنبال آن «اینترنت»، همانطور که با آن آشنا هستیم، همچنان بزرگترین و نمونه رو به رشد سیستمهای توزیع شده است. با تغییر اینترنت از «IPv4» به «IPv6»، سیستمهای توزیع شده از «LAN-محور» بودن به «اینترنت-محور» شدن، ارتقا پیدا کردند.
سیستم های توزیع شده در شبکه های مخابراتی چیست؟
شبکههای تلفنی و «تلفنهمراه» نیز نمونههایی از شبکههای توزیع شده محسوب میشوند. قدمت شبکههای تلفنی به بیش از یک قرن میرسد و بهعنوان نمونهای اولیه از شبکههای «نظیر به نظیر» به شمار میروند. شبکههای تلفنهمراه، شبکههایی توزیع شده هستند با ایستگاههای پایهای فیزیکی که در مناطقی توزیع شدهاند. همانگونه که شبکههای تلفنی، بهصورت «VOIP» (انتقال صدا از طریق IP) پیشرفت کردند، رشد پیچیدگی آن بهعنوان شبکهای توزیع شده همچنان ادامه دارد.

سیستم های توزیع شده در سیستم های بلادرنگ چیست؟
سیستمهای «بلادرنگ» (Real-Time) توزیعشده (هم بهصورت محلی و هم بهصورت سراسری)، بهوسیله صنایع متعدد و گوناگونی مورد استفاده قرار میگیرند. بهعنوان مثال، «خطوط هوایی» (Airlines)، از سیستمهای کنترل پرواز، «Uber» و «Lyft» (۲ ارائه دهنده خدمات مربوط به حمل و نقل و تاکسی) از سیستمهای «ارسال»، کارخانههای تولیدی از سیستمهای کنترل اتوماسیون، شرکتهای تجارت الکترونیک از سیستمهای ردیابی بلادرنگ استفاده میکنند.
سیستم های توزیع شده در پردازش موازی چیست؟
در گذشته، بین «محاسبات موازی» (Parallel computing) و «سیستم های توزیع شده»، تمایزی وجود داشت. بهگونهای که «محاسبات موازی»، بر نحوه اجرای نرمافزار روی «نخها» (Threads) یا پردازندههای متعددی که به دادهها و حافظه مشابهی یکسانی دارند، متمرکز بود. منظور از سیستمهای توزیعشده، ماشینهای مجزا با پردازندهها و حافظه خاص خود بود. امروزه با پیدایش سیستمعاملها، پردازندهها و خدمات ابری نوین، محاسبات توزیع شده، پردازش موازی را نیز در بر میگیرد.
سیستم های توزیع شده در هوش مصنوعی چیست؟
«هوش مصنوعی» توزیع شده، راهی برای بهرهمندی از «پردازش موازی» و «قدرت محاسباتی» در مقیاس بزرگ، برای یادگیری و پردازش دیتاستهای بسیار بزرگ با بهکارگیری چندین سیستم مستقل، محسوب میشود.
سیستم های پایگاه داده توزیع شده در سیستم های توزیع شده چیست؟
همانطور که در مطلب پیشین مجله فرادرس با آن آشنا شدیم، پایگاه داده توزیع شده (Distributed Database) در حقیقت، پایگاه دادهای است که روی چندین سرور (یا مکانهای فیزیکی متعددی) پخش شده است. امکان «تکرار» (Replicated) یا «تکثیر» (Duplicated) دادهها دراین نوع سیستمها وجود دارد.
برنامههای کاربردی رایج، معمولاً از پایگاه داده توزیع شده استفاده میکنند و باید از ماهیت «همگن» (Homogenous) یا «ناهمگن» (Heterogenous) بودن سیستم پایگاه داده توزیع شده، آگاهی داشته باشند. در «پایگاه داده توزیع شده همگن»، تمام سیستمها، شامل «سیستم مدیریت پایگاه داده» (Database Management System | DBMS) و «مدل دادهای» یکسانی هستند. مدیریت و بهبود عملکرد این نوع سیستمها، با افزودن گرهها و «مکانهای» (Locations) جدید فرایند سادهتری دارد. در مقابل، «پایگاه داده توزیع شده ناهمگن»، امکانِ وجود مدلهای دادهای متعدد و DBMS گوناگون را فراهم میکند. در این نوع سیستمها، به منظور تبدیل (ترجمه) دادهها بین گرهها (معمولاً هنگام ادغام برنامهها و سیستمها) از «دروازهها» (Gateways) کمک میگیرند.

انواع معماری در سیستم های توزیع شده چیست ؟
«سیستم های توزیع شده»، نیاز به شبکهای دارند تا از طریق آن تمامی مؤلفههای (کامپیوترها، سختافزار یا نرمافزار) خود را بههم وصل و از این طریق، بتوانند پیامهایی را به منظور تعامل با هم، منتقل کنند.
- این شبکه میتواند از «آدرس IP»، کابلهای شبکه یا حتی برد مدار الکترونیکی برای اتصال استفاده کند.
- پیامهایی که بین کامپیوترها رد و بدل میشوند، حاوی دادههایی (مانند پایگاههای داده، اشیا و فایلها) هستند که سیستمها قصد اشتراکگذاری آنها را دارند.
- یکی از مهمترین ویژگیهای سیستم توزیع شده این است که پیامها چگونه «بهطور مطمئنی» (Reliably) منتقل میشوند (در عملیاتی همچون ارسال، دریافت، تایید آن) یا اینکه «گره» چگونه خرابیِ پیش آمده را مدیریت میکند.
- یکی از دلایل شکلگیری سیستمهای توزیعشده این است که، سرویسها و اپلیکیشنها (برنامههای کاربردی) نیاز به رشد (توسعه) داشتند و کامپیوترهای جدیدی باید افزوده و مدیریت میشدند. مهمترین نکتهای که در طراحی سیستمهای توزیعشده باید رعایت شود ایجاد توازنی (یا Trade-off) بین «پیچیدگی» (Complexity) و «بهرهوری» (Performance) است.
برای درک بهتر این موضوع، انواع معماری سیستمهای توزیعشده بههمراه مزایا و معایب هر یک را در ادامه، بیان کردهایم.

سیستمهای توزیع شده را میتوان بهعنوان مجموعهی از کامپیوترهای جدا از هم در نظر گرفت که کاربر، آن را بهصورت سیستمی منسجم و واحد میبیند. بهکارگیری سیستمهای توزیع شده (با فراهم کردن دستگاهها و سیستمهای پشتیبان)، قابلیت اطمینان و توانایی کامپیوترها در اجرای برنامهها را افزایش میدهد. این نوع سیستم، همچنین با ایجاد هماهنگی و تقسیم فرآیندها بین چندین کامپیوتر، «بازده» (Efficiency) نرمافزار را نیز افزایش میدهد. اپلیکیشنها و پردازشهای (فرایندهای) توزیع شده، بهطور معمول، یکی از ۴ نوع معماری که در ادامه فهرست شدهاند را بهکار میبرند.
- معماری کلاینت سرور
- معماری ۳ لایه
- معماری چند لایه
- معماری نظیر یه نظیر
معماری کلاینت سرور در سیستم های توزیع شده چیست ؟
در گذشته، معماری سیستمهای توزیع شده، متشکل از سِروِری بودند که بهعنوان منبعی اشتراکی (مانند چاپگر، پایگاه داده یا «سرورِ وب» یا «Web Server») محسوب میشد. چندین کلاینت (کاربرانِ کامپیوتر) نیز برای آن وجود داشت که زمان و چگونگی استفاده از منبع اشتراکی را تعیین میکردند. کلاینتها میتوانستند دادهها را دستکاری کنند، آنها را نمایش دهند و مجدداً به سرور برگردانند. «مخازن کد»، مانند «گیت» (Git)، نمونه خوبی برای این نوع سیستم است که در آن برنامهنویسان، مسئول ایجاد تغییرات (Commit | کامیت کردن) در کدها هستند.
معماری «کلاینت سرور» (Client Server) در حقیقت، شکل پایهای و سادهترین نوع سیستم توزیع شده است که در آن ارتباط (تعامل) سادهای بین سیستم و کلاینت انجام میشود. منظور از «ارتباطات» (Communication) در اینجا، «پیامرسانی» (Messaging)، «رایانش» (Calculations) و «جمعآوری دادهها» (Data Collection) است. این سادهترین روشی است که در آن، برنامه (کلاینت) درخواستی را ایجاد میکند که توسط برنامه دیگر (سرور) انجام یا اجرا میشود. در اینجا، کلاینت، ورودی را به سروری مجزا ارسال میکند و سرور، پاسخ خروجی را به کلاینت بر میگرداند. در ادامه، نمایی از معماری کلاینت-سرور را آوردهایم.

امروزه، معماری سیستمهای توزیع شده همراه با «برنامههای کاربردی وب» (Web Applications)، بهصورتی که در ادامه آمده، تکامل یافته است. این معماریها شامل ۳ دسته «۳ لایه»، «چند لایه» و «نظیر به نظیر» هستند.
معماری ۳ لایه در سیستم های توزیع شده چیست ؟
در معماری «۳ لایه» (Three-tier)، نیازی نیست که کلاینتها، هوشمندی خاصی داشته باشند و برای انجام پردازش و تصمیمگیری میتوانند به لایهای میانی متکی باشند. بسیاری از وب اپلیکیشنهای ابتدایی در این دسته قرار میگیرند. لایه میانی را میتوان عاملی نامید که «درخواستهایی» (Requests) را از کلاینت دریافت، دادهها را پردازش و سپس آن را به سرورها ارسال میکند. لازم به ذکر است که این درخواستها میتوانند «بدون حالت» (Stateless) باشند.

سیستم توزیع شده «۳ لایه» (Three-tier)، نوعی از معماری «کلاینت سرور» است که از ۳ لایه محاسباتی تشکیل شده است. در ادامه، آنها را فهرست کردهایم.
- لایه ارائه (Presentation layer): نمایش رابط کاربری، توسط این لایه انجام میشود.
- لایه کاربردی (Application layer): این لایه به اطلاعات موجود در پایگاه داده دسترسی دارد و آن را پردازش میکند.
- لایه داده (Data layer): این لایه، اطلاعات کاربر و پایگاه داده را ذخیره و میزبانی میکند.
لازم به ذکر است که در این سیستم، برای اِعمال هر تغییر، نیازی نیست تا کل سیستم را تغییر بدهیم. سیستم توزیع شده ۳-لایه، نوعی از معماری کلاینت-سرور است که در ۳ سطح محاسباتی «ارائه»، «برنامه کاربردی» و «داده» سازماندهی شده است.
معماری چند لایه در سیستم های توزیع شده چیست ؟
وبسرویسهای سازمانی در ابتدا، معماریهای سیستمهای «n لایه» یا «چند لایه» (Multi-tier) را ایجاد کردند. این کار، افزایش محبوبیت سرورهای اپلیکیشنی، که حاوی منطق تجاری هستند و با سطوح «دادهای» و همینطور سطوح «ارائه» تعامل دارند را به دنبال داشت.

معماری نظیر به نظیر در سیستم های توزیع شده چیست ؟
در معماری «نظیر یه نظیر» (Peer-to-Peer | P2P)، از کامپیوتر متمرکز یا خاصی که کارهای سنگین و هوشمند را انجام دهد، خبری نیست. تصمیمگیریها و مسئولیتها، بین کامپیوترها تقسیم میشوند و هر کدام یک از آنها میتوانند در نقش «کلاینت» یا «سرور» ظاهر شوند. فناوری «بلاک چِین» (Blockchain)، را میتوان بهعنوان نمونه خوبی از این نوع معماری نام برد.
ظهور معماری «نظیر یه نظیر» یا «همتا به همتا»، به اواخر دهه ۵۰ (۱۹۷۰ میلادی) بر میگردد. هر کامپیوتر در این معماری، بهعنوان گرهای برای تبادل اطلاعات (به اشتراکگذاری حجم عظیمی از دادهها) در شبکه موجود، عمل میکند.

همانطور که گفتیم، در این معماری، نباید به دنبال «سرور متمرکزی» (Centralized Server) باشیم، بهاین دلیل که هر دستگاه، هم بهعنوان «کلاینت» و هم بهعنوان «سرور» عمل میکند. این مدل در شبکههای کامپیوتری به منظور سازماندهی پردازندههایی که با یکدیگر تعامل دارند و حافظه محلی جداگانهای را نگه میدارند (حفظ میکنند)، استفاده میشود. در این شبکه، تمامی سرورها و برنامهها دارای دسترسی، مجوزها و عملکردهای یکسانی هستند و برقراری ارتباط بین آنها در یک سطح (بدون سلسله مراتب) انجام میشود. بهطور خلاصه، در سیستم شبکهای «نظیر به نظیر»، هر کامپیوتر وظیفه مدیریت خودش را بر عهده دارد، بههمین دلیل است که فرایند راهاندازی و نگهداری آن نیز کار سختی نیست.
مزایا و معایب سیستم های توزیع شده چیست ؟
تا اینجا با تعریف و انواع معماریها در سیستمهای توزیع شده آشنا شدیم. اکنون میخواهیم مزایا و معایب هر یک از این سیستمها را مورد بررسی قرار دهیم.
مزایای سیستم های توزیع شده چیست ؟
هدف نهایی سیستم توزیع شده این است که توانایی «مقیاسپذیری»، «کارایی» و «دسترسیپذیری» اپلیکیشنها را فراهم کند. در این بخش میخواهیم، برخی از مزیتهای اصلی سیستمهای توزیع شده را با هم بررسی کنیم.
- «مقیاسدهی افقی» (Horizontal Scaling) نامحدود: هر زمان که نیاز بود میتوان کامپیوترهایی را به سیستم اضافه کرد.
- «تأخیر کم» (Low Latency): وجود کامپیوترهاییکه از نظر جغرافیایی به کاربران نزدیکترند، زمان ارائه خدمات به کاربران را کاهش میدهد.
- «تحملپذیری در مقابل خطا» (Fault Tolerance): درصورتیکه یکی از سرورها یا مرکز دادهای از کار بیفتد، سایر سیستمها همچنان میتوانند به سرویسدهی مشغول باشند.
- «کارایی» (Efficiency): درخواستهای پیچیده میتوان به قطعات کوچکتری تقسیم کرد، بهطوریکه بین سیستمهای مختلفی توزیع شوند. به این ترتیب، درخواست، ساده و بهعنوان شکلی از محاسبات موازی، روی آن کار میشود. در نتیجه زمان لازم برای پردازش درخواستها کاهش مییابد.
- زمان پاسخگویی در سیستمهای توزیع شده کوتاهتر است و توان عملیاتی بالاتری دارد.
- نسبتِ «عملکرد به قیمت» و همچنین انعطافپذیری بهتری دارد.
- در سیستم توزیع شده، هر گره، به گرههای دیگر متصل است، بههمین دلیل، بهراحتی میتوانند داده ها را با یکدیگر به اشتراک بگذارند.
- افزودن گرههای جدید در سیستم توزیع شده، آسان است.
- در صورت خرابی یکی از گرهها، عملکرد کل سیستم مختل نمیشود و سایر گرهها بهخوبی کار میکنند.
- منابعی همچون چاپگرها این توانایی را دارند که با گرههای متعددی تعامل داشته باشند.

معایب سیستم های توزیع شده چیست ؟
«پیچیدگی» (Complexity)، بزرگترین نقطه ضعف سیستم های توزیع شده محسوب میشود. با وجود کامپیوترهای بیشتر، پیامهای بیشتری هم وجود خواهد داشت و در نتیجه دادههای زیادی بین گرهها منتقل میشود که میتواند منجر به بروز مشکلاتی شود که در ادامه به آنها اشاره میکنیم.
- «سازگاری و یکپارچگی دادهها» (Data Integration & Consistency): توانایی همگامسازی ترتیب تغییرات در دادهها و حالتهای اپلیکیشن در سیستم توزیع شده، بهویژه هنگام شروع، پایان و هنگام از کار افتادن گرهها، چالش برانگیز است.
- از کار افتادن و خرابی شبکه و ارتباطات: ممکن است که پیامها به گرههای صحیح یا با ترتیب درستی تحویل داده نشوند که این قضیه، از کار افتادن ارتباطات و کاهش کارایی را میتواند بهدنبال داشته باشد.
- مدیریت «سربار» (Overhead): برای مشاهده عملیات و خرابیهای سیستمهای توزیعشده، عملکردهایی با هوشمندی، نظارت، گزارشگیری و توازن بار بیشتری میبایست اضافه شود.
- این امکان وجود دارد که در حین حرکت از گرهای به گره دیگر، برخی از دادهها در شبکه از بین بروند.
- پایگاه داده در سیستمهای توزیع شده در مقایسه با سیستم «تک کاربره»، پیچیدهتر و مدیریت آن سختتر است.
- برقراری امنیت کافی در سیستمهای توزیع شده، چالش برانگیز است بهاین دلیل که هم گرهها و هم «ارتباطات» (Connections) باید محافظت شوند.
چالش ها و کاربردهای سیستم های توزیع شده چیست ؟
در این قسمت میخواهیم شما را با موارد استفاده از سیستم های توزیع شده آشنا کنیم. پس از آن چالشهای موجود در این فناوری را بیان میکنیم.
سیستم های توزیع شده در چه زمینه هایی کاربرد دارند ؟
در ادامه، برخی از موارد استفاده از سیستم های توزیع شده را فهرست کردهایم.
- مسائل مالی و تجارت: آمازون، eBay، بانکداری آنلاین، وبسایتهای تجارت الکترونیک.
- جامعه اطلاعاتی: موتورهای جستجو، ویکیپدیا، شبکههای اجتماعی، رایانش ابری.
- فناوریهای ابری: AWS ،Salesforce ،Microsoft Azure ،SAP.
- سرگرمی: بازی آنلاین، موسیقی، یوتیوب.
- خدمات درمانی: سوابق آنلاین بیماران، دادهورزی سلامت (Health Informatics).
- آموزشی: آموزش الکترونیکی.
- حمل و نقل و تدارکات: GPS ،Google Maps.
- مدیریت محیط زیست: فناوریهای حسگر.

در ادامه نیز مثالهای بیشتری را بیان کردهایم.
- شبکهای از Workstation-ها، خوشهها
- WWW (شبکه گسترده جهانی)، که در آن شاهد اشتراکگذاری منابع و اطلاعات هستیم.
- شبکهای از سیستمهای تعبیه شده
- پردازندههای «سلولی» (Cell) جدید (پِلیاِستیشن ۳)
- سیستمهای تولیدی توزیع شده (مانند خط مونتاژ خودکار)
- شبکهای از کامپیوترهای دفاتر شعب (سیستم اطلاعاتی که پردازش خودکار سفارشات را مدیریت میکند.)
چالش های موجود در سیستم های توزیع شده چیست ؟
سیستمهای توزیع شده، علاوهبر مزایای بسیاری که برای ما فراهم میکنند، چالشهایی را نیز به همراه دارند که باید مورد توجه قرار گیرند. برخی از این چالشها را در ادامه، بیان کردهایم.
- تأخیر شبکه (Network latency): شبکه ارتباطی در سیستم توزیع شده میتواند دچار «تأخیر» شود که در اینصورت بر «کارایی» سیستم نیز تأثیر میگذارد.
- هماهنگی توزیع شده (Distributed coordination): سیستمهای توزیع شده نیازمند هماهنگی بین گرهها هستند که بهدلیل ماهیت توزیع شده این نوع سیستم، میتواند چالش برانگیز باشد.
- امنیت (Security): سیستم های توزیع شده به دلیل ماهیت توزیع شدهای که دارند، در برابر تهدیدات امنیتی نسبت به سیستمهای متمرکز، آسیب پذیرتر هستند.
- سازگاری دادهها (Data consistency): حفظ سازگاری (ثبات) دادهها در گرههای متعددی که در سیستم توزیع شده وجود دارد، میتواند چالش برانگیز باشد.
سوالات متداول
در این بخش میخواهیم برخی از پرسشهای متداول در مورد «سیستمهای توزیع شده» را بههمراه پاسخهای متناظرشان، با هم مرور کنیم.
نمونه های واقعی سیستم های توزیع شده کدام اند؟
از نمونههای واقعی سیستمهای توزیع شده میتوان به اپلیکیشنهای هم پیمایی، پلتفرمهای معاملاتی، رسانههای اجتماعی، بازارهای آنلاین و غیره اشاره کرد. در ادامه، توضیحات مربوط به این نمونهها را بیان کردهایم.
- اپلیکیشنهای «هم پیمایی» (Ride-sharing): برنامههایی مانند «Uber» و «Rapido» برای سازگاری با رانندگان در «موقعیتیابی» و حتی «فرایند پرداخت»، به سیستمهای توزیع شده متکی هستند.
- پلتفرمهای معاملات سهام: پلتفرمهای خرید و فروش سهام، همچون «NYSE»، از سیستم های توزیع شده برای پردازش حجم زیادی از دادههای معاملاتی استفاده میکنند.
- پلتفرم رسانههای اجتماعی: فیسبوک و توییتر از سیستم توزیع شده برای مدیریت درخواستهای کاربران، ذخیره دادهها و ارائه بهروزرسانیهای بلادرنگ استفاده میکنند.
- بازارهای آنلاین، همچون «آمازون» و بازیهای آنلاین مانند «Fortnite» از سیستمهای توزیع شده برای مدیریت موجودی خود و همچنین مدیریت سرورهای بازی استفاده میکنند.
علت نیاز ما به سیستم های توزیع شده چیست ؟
دلایل زیادی وجود دارد که نیاز ما به سیستمهای توزیع شده را بیان میکنند. این سیستمها کارایی بهتر، قابلیت بهبودیافته تحملپذیری خطا و انعطافپذیری بالاتر در مقایسه با سیستمهای متمرکز را فراهم میکنند. سیستمهای توزیع شده، بهطور گستردهای در محاسبات نوین، از قبیل پردازش کلان دادهها و «شبکههای تحویل محتوا» (Content Delivery Networks) استفاده میشوند.
مهم ترین موضوعات در سیستم های توزیع شده چیست؟
از مهمترین مشکلاتی که در سیستمهای توزیع شده با آن روبهرو هستیم میتوان به مواردی همچون، حفظ سازگاری و همگامسازی دادهها، پیچیدگی تحملپذیری خطا، قابلیت اطمینان، چالشهای مربوط به امنیت بهدلیل افزایش سطح حملات و غیره اشاره کرد.
سیستم های توزیع شده چه خصوصیاتی دارند؟
از خصوصیات سیستم های توزیع شده میتوان به مواردی همچون اشتراک منابع، باز بودن سیستم (پذیرندگی)، همزمانی، مقیاسپذیری، تحملپذیری خطا، شفافیت و ناهمگونی اشاره کرد.
مزایای سیستم توزیع شده چیست؟
از مزایای سیستم توزیع شده میتوان به کارایی، مقیاسپذیری و مقرونبهصرفه بودن اشاره کرد.
انواع سیستم های توزیع شده چیست؟
از انواع معماریهای سیستمهای توزیع شده میتوان به معماری کلاینت-سرور، معماری نظیر به نظیر و معماری چند لایه اشاره کرد.
جمعبندی
در این مطلب از مجله فرادرس، در مورد اینکه سیستم های توزیع شده چیست، مواردی را مورد بررسی قرار دادیم و گفتیم که برخلاف اپلیکیشنهای سنتی که تنها، قابلیت اجرا روی یک سیستم را داشتند، اپلیکیشنهای توزیع شده، میتوانند بهطور همزمان روی چندین سیستم اجرا شوند.
سیستمهای توزیع شده، مدلی هستند که در آن، اجزای سیستم نرمافزاری، بین کامپیوترهای (گرههای) متعددی به اشتراک گذاشته میشوند اما با اینکه اجزای نرمافزار ممکن است در چندین کامپیوتر و در مکانهای مختلفی پخش شده باشند، همگی بهعنوان سیستمی واحد اجرا میشوند. این کار با هدف بهبود کارایی و افزایش بهرهوری انجام میشود. هماهنگی و تعامل سیستمهای موجود در شبکههای کامپیوتری، از طریق ارسال پیامها و به منظور دستیابی و انجام «وظیفه» (Task) خاصی انجام میشود.
توانایی سیستمهای توزیع شده در افزایش کارایی، تحمل پذیری خطا، دسترسی پذیری بالا و مقیاسپذیری، علاوهبر افزایش محبوبیت آن، این نوع سیستمها را به مدلی رایج در طراحی پایگاه داده و برنامههای کاربردی تبدیل کرده است.
بهطور خلاصه میتوان گفت که سیستمهای توزیع شده تاثیر بسزایی در زندگی ما دارند. اما، هنگام استفاده از آنها با چالشهایی در زمینه پیچیدگی و امنیت روبهرو میشویم که میبایست در طراحی سیستمهای توزیع شده در نظر گرفته شوند. برنامهنویسان با درک ویژگیها و چالشهای سیستمهای توزیع شده، میتوانند سیستمهای توزیعشده مؤثرتری را طراحی و پیادهسازی کنند که نیازهای کاربران را برآورده میکند.