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

انواع سیستم های توزیع شده به صورت جزئی صحبت کنیم. پیشنهاد می کنم حتما قبل از مطالعه این مطلب، پست های "سیستم های همگن و ناهمگن" و "سیستم های توزیع شده و نمونه های آن" در سایت تیما را مطالعه کنید. به طور کلی سیستم های توزیع شده به دو گروه Multicomputer و Multiprocessor تقسیم می شوند

سلام، وقتتون بخیر. علی هستم برنامه نویس تیما. امروز می خواهیم در مورد انواع سیستم های توزیع شده به صورت جزئی صحبت کنیم. پیشنهاد می کنم حتما قبل از مطالعه این مطلب، پست های "سیستم های همگن و ناهمگن" و "سیستم های توزیع شده و نمونه های آن" در سایت تیما را مطالعه کنید. به طور کلی سیستم های توزیع شده به دو گروه Multicomputer و Multiprocessor تقسیم می شوند.

 

 

Multiprocessor یا چند پردازنده ای و Multicomputer یا چند کامپیوتری در اصل جزء دسته کامپیوتر های موازی یا parallel هستند. تفاوت اساسی بین این دو مفهوم در این است که Multiprocessor در اصل یک کامپیوتر است که شامل چندین پردازنده است. در این نوع منابع محاسباتی مانند حافظه (Memory) و دستگاه های ورودی/خروجی (I/O) به اشتراک گذاشته می شوند. بر عکس این امر سیستم های Multicomputer، با اتصال چندین کامپیوتر مستقل از طریق یک شبکه ساخته می‌شود. یعنی هر سیستم به صورت مستقل منبع محاسباتی خود را دارد ولی در عین حال، هر کامپیوتر به منابع دیگر کامپیوتر ها هم دسترسی دارد.

 

همانطوری که گفتیم در سیستم های Multiprocessor حافظه به صورت مشترک هست ولی نکته مهم این است که در کل دو حالت کلی وجود دارد، یا اینکه حافظه Private هست و هر CPU حافظه خودش را دارد ولی در عین حال حافظه را به اشتراک می گذارد، یا اینکه اصلا حافظه ها جدا هستند و کلا حافظه ها به صورت جدا از پردازنده ها به اشتراک گذاشته شده اند که این حالت را Shared می نامند.

 

 

با توجه به شکل می بینیم که یک Bus یا مسیر وجود دارد که اجزاء رو بهم متصل می کند. در اصل این مورد یکی از ساده ترین تکنیک های تقسیم حافظه هست که به آن Bus-Based گفته می شود یعنی در این تکنیک، یک باس مشترک بین حافظه و تمام پردازنده ها است. این نکته لازم به ذکر هست که سیستم ها لزوما با تکنیک باس مشترک یا Bus-Shared طراحی نمی شوند. یک راه دیگر همانطوری که در شکل می بینید از طریق Switch است. عملا در این مورد از تکنیک های Switching برای دسترسی به حافظه استفاده می شود که در مورد Switch ها در پست های آینده بیشتر توضیح می دهیم.

 

 

 

یک مشکل مشترک که در هر دو تکنیک SwitchBased و BusBased وجود دارد این است که ممکن است Overload یا سربار کار پیش بیاید. Overload زمانی است که یک دستگاه یا سرویس از محدودیت های توصیه شده خود، فراتر می رود یعنی بار اضاف تر از توان خود را متحمل می شود. اغلب وقتی Overload رخ می دهد، دستگاه یا سرویس عملکرد ضعیفی را ارائه می دهد یا اینکه اصلاً کار نمی کند.

 

 

یکی از راه حل های Overload، استفاده از Local Cache است. در اصل یک حافظه پنهان یا کش به صورت محلی یعنی برای هر پردازنده به صورت جداگانه قرار می دهیم. کش جزو سریع ترین حافظه های موجود است که دلیل این سرعت Static بودن آن برخلاف حافظه های رم هست. حافظه های RAM رو اصطلاحا DRAM می نامند یعنی به صورت Dynamic هستند.

 

 

در واقع در DRAM ها برای ذخیره هر بیت اطلاعات به یک خازن و یک ترانزیستور نیاز است. این نوع رم ها کوچک تر هستند و هزینه کمتری هم دارند، به همین دلیل به عنوان حافظه اصلی از آن ها استفاده می شود. DRAM بر اساس شارژ شدن و خالی شدن شارژ خازن کار می کند. وقتی که شارژ خازن توسط ترانزیستور خالی می شود، لازم است تا عمل  Refreshصورت بگیرد. به همین دلیل هم هست که این گونه رم را پویا یا Dynamic می نامند. رم های ثابت یا  SRAMها بر خلاف رم های پویا حجیم تر هستند و از 4 یا 6 ترانزیستور برای ذخیره یک بیت اطلاعات استفاده می کنند و احتیاجی به رفرش هم ندارند. سرعت در اینگونه رم ها بیشتر است و به نسبت قیمت بالاتری نسبت به  DRAMها دارند. از  SRAMها برای حافظه نهان یا همان Cache استفاده می شود.

 

 

 

در حقیقت در این کش محلی در سیستم های توزیع شده، قسمتی از حافظه اصلی نگهداری می شود و حتی ممکن است محتوای تمامی کش های موجود یکسان باشد و این مسئله چالش Consistency یا سازگاری و cache coherency یا همگام سازی رو به وجود می آورد. برای حل این چالش باید توسط تکنیک های موجود، کش ها با هم همگام یا Sync شوند یعنی اطلاعات درون همه آنها با هم یکی شود. در اصل فایده کش ها این است که اطلاعات حیاتی و مهم رو نگه می دارند تا پردازنده نخواهد به Memory مراجعه کند. همچنین دلیل یکسان بودن اطلاعات هم کاهش Down Time و به وجود آوردن Availability هست. دقیقا مثل سیستم های بلاک چین و سرور های گوگل و ... . یکی از مشکلات سیستم های Caching، مبحث Limited Scalability یا محدودیت در گسترش است. در واقع گسترش دادن در این سیستم ها وابسته به تعداد، حجم و نحوه همگام سازی کش ها است که برای حل این مشکلات می توانیم کلا به جای استفاده از Bus، از Switch استفاده کنیم.

 

امیدوارم که از این آموزش لذت برده باشید و براتون مفید واقع شده باشه. با ما همراه باشید تا با هم یک درصد بیشتر بدونیم.

نظرات ارزشمند خود را با ما به اشتراک بگذارید

نظرات :
هنوز نظری ثبت نشده است.