یک سیستم توزیع شده در ساده ترین تعریف خود گروهی از رایانه ها است که با هم کار می کنند و به عنوان یک کاربر نهایی ظاهر می شوند. ماشینها حالت مشترکی دارند، به طور همزمان اجرا میشوند و میتوانند به طور مستقل بدون تأثیر بر زمان کارکرد کل سیستم کار کنند. حقیقت این است که مدیریت چنین سیستمهایی موضوعی پیچیده و پر از مشکلات است.
نمای کلی سیستم
سیستم توزیع شده امکان به اشتراک گذاری منابع (از جمله نرم افزار) متصل به شبکه را به طور همزمان فراهم می کند.
نمونه هایی از توزیع سیستم:
- پشته سنتی. این پایگاه های داده در سیستم فایل یک ماشین ذخیره می شوند. هر زمان که کاربر بخواهد اطلاعاتی را دریافت کند، مستقیماً با این دستگاه ارتباط برقرار می کند. برای توزیع این سیستم پایگاه داده، باید آن را همزمان روی چندین رایانه شخصی اجرا کنید.
- معماری توزیع شده.
سیستم توزیع شدهبه شما امکان می دهد به صورت افقی و عمودی مقیاس بندی کنید. برای مثال، تنها راه مدیریت ترافیک بیشتر، ارتقاء سخت افزاری است که پایگاه داده را اجرا می کند. به این مقیاس عمودی می گویند. مقیاس بندی عمودی تا حد معینی خوب است و پس از آن حتی بهترین تجهیزات نیز نمی توانند ترافیک مورد نیاز را تامین کنند.
مقیاسسازی افقی به معنای افزودن رایانههای بیشتر است، نه ارتقاء سختافزار در یک رایانه. مقیاس بندی عمودی عملکرد را تا آخرین قابلیت های سخت افزاری در سیستم های توزیع شده افزایش می دهد. این فرصت ها برای شرکت های فناوری با حجم کاری متوسط تا سنگین کافی نیست. بهترین چیز در مورد مقیاس بندی افقی این است که هیچ محدودیتی در اندازه وجود ندارد. هنگامی که عملکرد کاهش می یابد، یک ماشین دیگر به سادگی اضافه می شود، که، در اصل، می تواند به طور نامحدود انجام شود.
در سطح شرکت، یک سیستم کنترل توزیع شده اغلب شامل مراحل مختلفی است. در فرآیندهای تجاری در کارآمدترین مکان های شبکه کامپیوتری سازمانی. به عنوان مثال، در یک توزیع معمولی با استفاده از یک مدل سیستم توزیعشده سهلایه، پردازش دادهها بر روی رایانه شخصی در محل کاربر انجام میشود، پردازش تجاری در رایانه از راه دور انجام میشود، و دسترسی به پایگاه داده و پردازش دادهها در رایانهای کاملاً متفاوت انجام میشود. که دسترسی متمرکز را برای بسیاری از فرآیندها فراهم می کند. به طور معمول، این نوع از محاسبات توزیع شدهاز مدل تعامل مشتری و سرور استفاده می کند.
وظایف اصلی
وظایف اصلی یک سیستم کنترل توزیع شده عبارتند از:
- Transparency - دستیابی به یک تصویر سیستم واحد بدون مخفی کردن مکان، دسترسی، مهاجرت، همزمانی، failover، جابجایی، تداوم و جزئیات منابع برای کاربران.
- Openness - راه اندازی و تغییرات شبکه را ساده می کند.
- قابلیت اطمینان - در مقایسه با یک سیستم کنترل منفرد، باید قابل اعتماد، سازگار و دارای احتمال بالای پنهان کردن خطاها باشد.
- عملکرد - در مقایسه با مدلهای دیگر، مدلهای توزیعشده عملکرد را افزایش میدهند.
- مقیاس پذیر - این سیستم های کنترل توزیع شده باید از نظر قلمرو، مدیریت یا اندازه مقیاس پذیر باشند.
وظایف سیستم های توزیع عبارتند از:
- امنیت یک مشکل بزرگ در یک محیط توزیع شده است، به ویژه هنگام استفاده از شبکه های عمومی.
- تحمل خطا - زمانی که مدل با اجزای غیرقابل اعتماد ساخته شده باشد می تواند سخت باشد.
- هماهنگی و توزیع منابع - اگر پروتکل های مناسب یا خط مشی های لازم وجود نداشته باشد، می تواند دشوار باشد.
محیط محاسباتی توزیع شده
(DCE) یک استاندارد صنعتی پرکاربرد است که از چنین محاسبات توزیع شده پشتیبانی می کند. در اینترنت، ارائه دهندگان شخص ثالث برخی از خدمات عمومی را ارائه می دهند،که در این مدل قرار می گیرند.
محاسبات شبکه ای یک مدل محاسباتی با معماری توزیع شده از تعداد زیادی از رایانه های مرتبط با حل یک مسئله پیچیده است. در مدل محاسبات شبکه ای، سرورها یا رایانه های شخصی وظایف مستقلی را انجام می دهند و به طور سست از طریق اینترنت یا شبکه های کم سرعت به یکدیگر متصل می شوند.
بزرگترین پروژه محاسبات شبکه ای SETI@home است که در آن صاحبان رایانه فردی داوطلب می شوند تا برخی از چرخه های پردازش چندوظیفه ای خود را با استفاده از رایانه خود برای پروژه جستجوی هوش فرازمینی (SETI) انجام دهند. این مشکل رایانه ای از هزاران رایانه برای دانلود و جستجوی داده های تلسکوپ رادیویی استفاده می کند.
یکی از اولین کاربردهای محاسبات شبکه ای شکستن کدهای رمزنگاری شده توسط گروهی بود که اکنون به نام distributed.net شناخته می شود. این گروه همچنین مدل خود را به عنوان محاسبات توزیع شده توصیف می کند.
مقیاسسازی پایگاه داده
گسترش اطلاعات جدید از master به slave فوراً اتفاق نمی افتد. در واقع یک پنجره زمانی وجود دارد که در آن می توانید اطلاعات قدیمی را دریافت کنید. اگر اینطور نبود، عملکرد نوشتن آسیب می دید، زیرا سیستم های توزیع شده باید به طور همزمان منتظر انتشار داده ها باشند. آنها با چند مصالحه همراه هستند.
با استفاده از رویکرد پایگاه داده برده، می توان ترافیک خوانده شده را تا حدی کاهش داد. در اینجا گزینه های زیادی وجود دارد. اما شما فقط باید ترافیک نوشتن را به چندین تقسیم کنیدسرورها چون نمی تواند آن را مدیریت کند. یکی از راه ها استفاده از استراتژی تکرار چند استاد است. در آنجا، به جای Slave، چندین گره اصلی وجود دارد که خواندن و نوشتن را پشتیبانی می کنند.
روش دیگر شاردینگ نام دارد. با استفاده از آن، سرور به چندین سرور کوچکتر به نام خرده تقسیم می شود. این خردهها ورودیهای متفاوتی دارند، قوانینی در مورد اینکه کدام ورودیها در کدام قطعه قرار میگیرند ایجاد میشوند. ایجاد چنین قاعده ای بسیار مهم است که داده ها به طور مساوی توزیع شوند. یک رویکرد ممکن برای این کار، تعریف محدوده ها بر اساس برخی اطلاعات رکورد است.
این کلید خرد باید بسیار با دقت انتخاب شود، زیرا بارگذاری همیشه با پایههای ستونهای دلخواه برابر نیست. تنها قطعه ای که درخواست های بیشتری نسبت به بقیه دریافت می کند هات اسپات نامیده می شود و سعی می کنند از شکل گیری آن جلوگیری کنند. پس از تقسیم، داده های کالیبراسیون مجدد بسیار گران می شود و می تواند منجر به خرابی قابل توجهی شود.
الگوریتم های اجماع پایگاه داده
DB ها برای پیاده سازی در سیستم های امنیتی توزیع شده دشوار است، زیرا آنها به هر گره نیاز دارند تا در مورد وقفه یا اقدام صحیح مذاکره کند. این کیفیت به عنوان اجماع شناخته می شود و یک مشکل اساسی در ساخت یک سیستم توزیع است. دستیابی به نوع توافق مورد نیاز برای مشکل "تعهد" در صورتی ساده است که فرآیندهای درگیر و شبکه کاملا قابل اعتماد باشند. با این حال، سیستم های واقعی تابع تعدادی ازشکستهای احتمالی فرآیندهای شبکه، پیامهای از دست رفته، خراب یا تکراری.
این یک مشکل ایجاد می کند و نمی توان تضمین کرد که اجماع صحیح در یک دوره زمانی محدود در یک شبکه غیرقابل اطمینان حاصل می شود. در عمل، الگوریتمهایی وجود دارند که به سرعت در یک شبکه غیرقابل اعتماد به توافق میرسند. کاساندرا در واقع تراکنش های سبک وزن را از طریق استفاده از الگوریتم Paxos برای اجماع توزیع شده فراهم می کند.
محاسبات توزیع شده کلید هجوم پردازش کلان داده است که در سال های اخیر مورد استفاده قرار گرفته است. این روشی است برای شکستن یک کار بزرگ، مانند 100 میلیارد رکورد، که هیچ کامپیوتری به تنهایی قادر به انجام هر کاری نیست، به بسیاری از کارهای کوچکتر که می توانند در یک ماشین واحد قرار گیرند. توسعه دهنده وظایف بزرگ خود را به کارهای کوچکتر تقسیم می کند، آنها را به صورت موازی بر روی بسیاری از ماشین ها اجرا می کند، داده ها را به طور مناسب جمع آوری می کند، سپس مشکل اصلی حل خواهد شد.
این رویکرد به شما امکان می دهد به صورت افقی مقیاس بندی کنید - وقتی کار بزرگی وجود دارد، فقط گره های بیشتری را به محاسبه اضافه کنید. این وظایف برای سالها توسط مدل برنامهنویسی MapReduce مرتبط با پیادهسازی برای پردازش موازی و تولید مجموعههای داده بزرگ با استفاده از یک الگوریتم توزیعشده روی یک خوشه انجام میشود.
در حال حاضر MapReduce تا حدودی قدیمی است و مشکلاتی را به همراه دارد. معماری های دیگری نیز پدید آمده اند که به این مسائل می پردازند. یعنی، معماری Lambda برای توزیعسیستم های پردازش جریان پیشرفت ها در این زمینه ابزارهای جدیدی را به ارمغان آورده است: Kafka Streams، Apache Spark، Apache Storm، Apache Samza.
سیستم های ذخیره سازی و تکثیر فایل
سیستمهای فایل توزیعشده را میتوان به عنوان ذخیرهسازی دادههای توزیعشده در نظر گرفت. این همان مفهوم است - ذخیره سازی و دسترسی به مقدار زیادی از داده ها در مجموعه ای از ماشین ها که یک موجودیت واحد هستند. آنها معمولاً با محاسبات توزیع شده همراه هستند.
برای مثال، یاهو از سال 2011 به دلیل اجرای HDFS روی بیش از 42000 گره برای ذخیره 600 پتابایت داده شناخته شده است. ویکیپدیا این تفاوت را تعریف میکند که سیستمهای فایل توزیعشده اجازه دسترسی به فایلها را با استفاده از رابطها و معنایی مشابه فایلهای محلی، به جای یک API سفارشی مانند زبان کاساندرا پرس و جو (CQL) میدهند.
Hadoop Distributed File System (HDFS) سیستمی است که برای محاسبات روی زیرساخت Hadoop استفاده می شود. به طور گسترده، از آن برای ذخیره و تکثیر فایل های بزرگ (اندازه گیگابایت یا TB) در بسیاری از ماشین ها استفاده می شود. معماری آن عمدتاً از NameNodes و DataNodes تشکیل شده است.
NameNodes مسئول ذخیره ابرداده در مورد خوشه است، مانند اینکه کدام گره حاوی بلوک های فایل است. آنها به عنوان هماهنگکنندههای شبکه عمل میکنند و بهترین مکان را برای ذخیره و کپی کردن فایلها و پیگیری سلامت سیستم پیدا میکنند. DataNodes به سادگی فایل ها را ذخیره می کند و دستوراتی مانند تکرار فایل، نوشتن جدید ودیگران.
جای تعجب نیست که HDFS بهترین استفاده را با Hadoop برای محاسبات دارد، زیرا آگاهی از اطلاعات وظیفه را فراهم می کند. سپس کارهای مشخص شده روی گره هایی که داده ها را ذخیره می کنند اجرا می شوند. این به شما امکان می دهد از مکان داده ها استفاده کنید - محاسبات را بهینه می کند و میزان ترافیک روی شبکه را کاهش می دهد.
سیستم فایل بین سیاره ای (IPFS) یک پروتکل/شبکه جدید همتا به همتا برای سیستم فایل توزیع شده است. با استفاده از فناوری بلاک چین، معماری کاملاً غیرمتمرکز بدون مالک یا نقطه شکست دارد.
IPFS یک سیستم نامگذاری (شبیه DNS) به نام IPNS ارائه می دهد و به کاربران امکان می دهد اطلاعات را به راحتی بازیابی کنند. این فایل را از طریق نسخهسازی تاریخی ذخیره میکند، درست مانند Git. این امکان دسترسی به تمام حالت های قبلی فایل را فراهم می کند. هنوز در حال توسعه سنگین (نسخه 4.4 در زمان نگارش) است، اما قبلاً پروژههایی را دیده است که علاقهمند به ساخت آن هستند (FileCoin).
سیستم پیام رسانی
سیستمهای پیامرسان مکانی مرکزی برای ذخیره و توزیع پیامها در یک سیستم مشترک فراهم میکنند. آنها به شما اجازه می دهند منطق برنامه را از ارتباط مستقیم با سایر سیستم ها جدا کنید.
مقیاس شناخته شده - خوشه کافکای LinkedIn روزانه ۱ تریلیون پیام را با حداکثر ۴.۵ میلیون پیام در ثانیه پردازش میکند.
به زبان ساده، پلت فرم پیام رسانی به این صورت عمل می کند:
- پیاماز برنامهای که به طور بالقوه آن را ایجاد میکند، به نام تولیدکننده، به پلتفرم میرود و از چندین برنامه به نام مصرفکننده خوانده میشود.
- اگر نیاز دارید رویداد خاصی را در مکانهای مختلف ذخیره کنید، مانند ایجاد کاربر برای پایگاه داده، ذخیرهسازی، سرویس ارسال ایمیل، پس پلت فرم پیامرسانی تمیزترین راه برای توزیع آن پیام است.
چندین پلتفرم پیام رسان محبوب و درجه یک وجود دارد.
RabbitMQ یک واسطه پیام است که به شما امکان می دهد کنترل مسیرهای خود را با استفاده از قوانین مسیریابی و سایر پارامترهای به راحتی تنظیم کنید. می توان آن را یک کارگزار «هوشمند» نامید زیرا منطق زیادی دارد و پیام هایی را که از طریق آن می گذرد به دقت زیر نظر دارد. گزینه هایی برای AP و CP از CAP ارائه می دهد.
Kafka یک واسطه پیام است که کمی عملکرد کمتری دارد زیرا پیامهایی که خوانده شدهاند را پیگیری نمیکند و به منطق مسیریابی پیچیده اجازه نمیدهد. این به دستیابی به عملکرد شگفت انگیز کمک می کند و با توسعه فعال سیستم های توزیع شده توسط جامعه منبع باز و پشتیبانی تیم Confluent، بزرگترین وعده را در این فضا نشان می دهد. کافکا در بین شرکتهای با فناوری پیشرفته محبوبیت بیشتری دارد.
کاربردهای تعامل با ماشین
این سیستم توزیع گروهی از رایانهها است که با هم کار میکنند تا به عنوان یک رایانه جداگانه برای کاربر نهایی ظاهر شوند. این دستگاه ها در شرایط عمومی کار می کنندبه طور همزمان و می تواند به طور مستقل بدون تأثیر بر زمان کارکرد کل سیستم کار کند.
اگر پایگاه داده را توزیع شده در نظر می گیرید، فقط در صورتی که گره ها برای هماهنگ کردن اقدامات خود با یکدیگر تعامل داشته باشند. در این مورد چیزی شبیه به یک برنامه کاربردی است که کد داخلی خود را در یک شبکه همتا به همتا اجرا می کند و به عنوان یک برنامه توزیع شده طبقه بندی می شود.
نمونه هایی از این برنامه ها:
- مقیاس شناخته شده - BitTorrent ازدحام 193000 گره برای قسمت Game of Thrones.
- فناوری ثبت پایه سیستم های بلاک چین توزیع شده.
دفترهای توزیع شده را می توان به عنوان یک پایگاه داده غیرقابل تغییر و فقط کاربردی در نظر گرفت که در تمام گره های شبکه توزیع تکرار، همگام سازی و به اشتراک گذاشته می شود.
مقیاس معروف - شبکه اتریوم - در 4 ژانویه 2018 روزانه 4.3 میلیون تراکنش داشت. آنها از الگوی Event Sourcing استفاده می کنند که به شما امکان می دهد وضعیت پایگاه داده را در هر زمانی بازیابی کنید.
Blockchain فناوری زیربنایی فعلی است که برای دفتر کل توزیع شده استفاده می شود و در واقع آغاز آن را نشان می دهد. این جدیدترین و بزرگترین نوآوری در فضای توزیع شده، اولین پروتکل پرداخت واقعاً توزیع شده، بیت کوین را ایجاد کرد.
Blockchain یک دفتر کل توزیع شده با فهرستی از تمام تراکنش هایی است که تا کنون در شبکه آن انجام شده است. معاملات در بلوک ها گروه بندی و ذخیره می شوند. کل بلاک چین اساساً یک لیست پیوندی از بلوک ها است. بلوک های مشخص شدهایجاد آنها پرهزینه است و از طریق رمزنگاری به طور محکم به یکدیگر متصل می شوند. به بیان ساده، هر بلوک حاوی یک هش ویژه (که با X عدد صفر شروع می شود) از محتویات بلوک فعلی (به شکل درخت مرکل) به اضافه هش بلوک قبلی است. این هش به قدرت CPU زیادی نیاز دارد.
نمونه هایی از سیستم عامل های توزیع شده
انواع سیستم برای کاربر ظاهر می شود زیرا آنها سیستم های تک کاربر هستند. آنها حافظه، دیسک خود را به اشتراک می گذارند و کاربر هیچ مشکلی در پیمایش داده ها ندارد. کاربر چیزی را در رایانه شخصی خود ذخیره می کند و فایل در مکان های مختلف مانند رایانه های متصل ذخیره می شود تا داده های از دست رفته به راحتی بازیابی شوند.
نمونه هایی از سیستم عامل های توزیع شده:
- Windows Server 2003;
- Windows Server 2008;
- Windows Server 2012;
- UbuntuLinux (سرور آپاچی).
اگر هر رایانه ای بالاتر بوت شود، یعنی اگر درخواست های زیادی بین رایانه های شخصی رد و بدل شود، به این ترتیب تعادل بار رخ می دهد. در این مورد، درخواست ها به رایانه شخصی همسایه منتشر می شود. اگر شبکه بارگذاری بیشتری داشته باشد، می توان آن را با افزودن سیستم های بیشتری به شبکه گسترش داد. فایل شبکه و پوشهها همگامسازی میشوند و از قراردادهای نامگذاری استفاده میشود تا هنگام بازیابی دادهها خطایی رخ ندهد.
Caching همچنین هنگام دستکاری داده ها استفاده می شود. همه رایانه ها از فضای نام یکسانی برای نامگذاری فایل ها استفاده می کنند. ولیسیستم فایل برای هر کامپیوتر معتبر است. اگر بهروزرسانیهایی برای فایل وجود داشته باشد، در یک رایانه نوشته میشود و تغییرات در همه رایانهها منتشر میشود، بنابراین فایل یکسان به نظر میرسد.
فایل ها در طول فرآیند خواندن/نوشتن قفل می شوند، بنابراین بین رایانه های مختلف بن بست وجود ندارد. جلسات نیز رخ می دهد، مانند خواندن، نوشتن فایل در یک جلسه و بستن جلسه، و سپس کاربر دیگری می تواند همین کار را انجام دهد و غیره.
مزایای استفاده
سیستم عاملی که برای آسان کردن زندگی روزمره مردم طراحی شده است. برای منافع و نیازهای کاربر، سیستم عامل می تواند تک کاربره یا توزیع شده باشد. در یک سیستم منابع توزیع شده، بسیاری از رایانه ها به یکدیگر متصل هستند و منابع خود را به اشتراک می گذارند.
مزایای انجام این کار:
- اگر یک رایانه در چنین سیستمی معیوب یا آسیب دیده باشد، گره یا رایانه دیگری از آن مراقبت خواهد کرد.
- منابع بیشتر را می توان به راحتی اضافه کرد.
- منابعی مانند چاپگرها می توانند به چندین رایانه خدمت کنند.
این مختصری در مورد سیستم توزیع، چرایی استفاده از آن است. چند نکته مهم که باید به خاطر بسپارید: آنها پیچیده هستند و بر اساس مقیاس و قیمت انتخاب می شوند و کار کردن با آنها سخت تر است. این سیستم ها در چندین دسته ذخیره سازی توزیع می شوند: محاسبات، سیستم های فایل و پیام رسانی، ثبات ها، برنامه های کاربردی. و همه اینها در مورد یک سیستم اطلاعاتی پیچیده بسیار سطحی است.