تئوری CAP در سیستم توزیع شده

در یک سیستم توزیع شده، حداکثر دو تا از سه ویژگی Consistency، Availability یا Partition Tolerance می تواند وجود داشته باشد. این تعریف نظری، توسط Brewer ارائه شد و به صورت گسترده مورد قبول متخصصان سیستم های توزیع شده قرار گرفت. در این درس، نگاهی به تعریف و کاربرد این نظریه و هر کدام از سه ویژگی موجود در آن می اندازیم.

ادامه خواندن “تئوری CAP در سیستم توزیع شده”

مقیاس پذیری یا توسعه پذیری (Scalability) در یک سیستم توزیع شده چیست؟

توسعه پذیری یا همان Scalability که بعضا به آن مقیاس پذیری هم گفته می شود یک تعریف بسیار ساده دارد: سیستمی که بتواند خواسته های در حال افزایش را پاسخ دهد. برای مثال اگر شما یک نرم افزار دارید که بر روی یک سرور قرار دارد (مثلا یک وب سایت)، و روزانه ۱۰۰بازدید کننده از وب سایت شما دیدن می کنند، و بعد از مدتی این ۱۰۰بازدید کننده در روز به ۱۰هزار بازدید کننده رسید، در صورتیکه سرور شما بتواند با هزینه ی به نسبت معقولی این ۱۰هزار بازدید کننده را مدیریت کند، شما یک سیستم Scalable یا توسعه پذیر خواهید داشت. مثلا فرض کنید، برای ۱۰۰بازدید در روز، شما مبلغ ۱۰هزار تومان در ماه پرداخت میکردید. حالا که بازدید شما ۱۰هزار نفر شده (یعنی ۱۰۰برابر شده)، هزینه ی شما نباید ۱۰۰برابر شود. مثلا هزینه شما به جای ۱۰هزار تومان در ماه، بایستی ۲۰هزار تومان در ماه (یعنی ۲برابر) شود، تا بتوانیم بگوییم یک سیستم توسعه پذیر داریم.

ادامه خواندن “مقیاس پذیری یا توسعه پذیری (Scalability) در یک سیستم توزیع شده چیست؟”

سیستم فایل توزیع شده (Distributed File System) چیست؟

رشد سیستم ها و محاسبات توزیع شده (محاسباتی که بر روی چندین کامپیوتر در یک سیستم توزیع شده انجام می شوند) باعث شده نیاز برای ذخیره فایل ها به صورت توزیع شده نیز به وجود آید.

سیستم فایل توزیع شده، در واقع راهکاریست، که باعث میشود، فایل های موجود بر روی Nodeهای (کامپیوترهای) مختلف در یک سیستم توزیع شده، به راحتی قابل دسترس باشند. همان طور که میدانید در یک سیستم توزیع شده، شفافیت (Transparency) وجود دارد. به این معنی که، پردازش ها در سیستم توزیع شده از چشم کاربر پنهان است (پیشنهاد میکنیم درس شفافیت را مطالعه داشته باشید). پس توزیع فایل ها نیز، بایستی از چشم کاربر استفاده کننده پنهان باشد. ادامه خواندن “سیستم فایل توزیع شده (Distributed File System) چیست؟”

شفافیت (Transparency) در یک سیستم توزیع شده به چه معناست؟

در یک سیستم توزیع شده، چنانچه کاربری که از این سیستم استفاده میکند، این تصور را پیدا کند که سیستم به صورت یک پارچه (و در واقع یک کامپیوتر) عمل می کند، شفافیت رخ داده است.

برای مثال، اداره ای را در نظر بگیرید که انسان های دیگر درخواست های خود را به ایمیل info@thatcompany.com ارسال می کنند. یک گروه در آن اداره، وظیفه ی ارسال ایمیل های مختلف، به بخش های مختلف آن اداره را دارد. مثلا اگر ایمیل حاوی اطلاعات فنی بود، ایمیل (بدون اطلاع کاربر ارسال کننده) به بخش فنی آن اداره فرستاده می شود. در جواب نیز، ایمیل از طرف آن اداره و از ایمیل reply@thatcompany.com دریافت برای کاربر ارسال می شود. در واقع کاربر متوجه نمی شود که آن اداره، دارای بخش های مختلفی است و همچنین متوجه این مورد نمی شود که ایمیلش به کدام بخش ارسال شده است.

ادامه خواندن “شفافیت (Transparency) در یک سیستم توزیع شده به چه معناست؟”

مفهوم Coupling در سیستم های توزیع شده

در مباحث نرم افزاری، جفت شدگی (Coupling) و چسبندگی (Cohesion) دو شاخص اصلی و معیاری برای کیفیت سیستم هستند. در یک سیستم نرم افزاری، همیشه تلاش بر این بوده که چسبندگی حداکثر شود و جفت شدگی حداقل (Highly Cohesion and Loosely Coupling). در این درس به این دو مفهوم میپردازیم و به طور دقیق تر به مفهوم Coupling در یک سیستم توزیع شده تمرکز می کنیم.

ادامه خواندن “مفهوم Coupling در سیستم های توزیع شده”

سیستم توزیع شده (Distributed System) چیست؟

حتما میدانید که سیستم عامل چیست. ویندوز یا لینوکس یا Mac OS از انواع سیستم عامل های مختلف هستند. حتی Android و IOS نیز نوعی سیستم عامل هستند که بر روی موبایل های امروز به فراوانی دیده می شوند. سیستم عامل، یک واسط کاربری در اختیار شما قرار میدهد تا به راحتی بتوانید از کامپیوتر خود استفاده کنید. سیستم عامل تمامی عملیات پنهانی (Background Operation) را برای شما انجام می دهد. مدیریت پروسه ها، مدیریت فایل سیستم ها و… از وظایف سیستم عامل هستند.

ادامه خواندن “سیستم توزیع شده (Distributed System) چیست؟”