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

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

CAP مخفف  Consistency، Availability و Partition Tolerance است، هر کدام هم تعریف خود را دارند:

Consistency: به این معنا که داده هایی که از سیستم درخواست میکنید، همواره آخرین داده های موجود در سیستم است. فرض کنید یک سیستم توزیع شده برای ثبت نمرات دانشجویان دارید. هر استاد، به صلاح خود در یک زمان ممکن است نمره یک دانشجو را تغییر دهد. حال اگر دانشجویی معدل خود را از سیستم درخواست کرد، این سیستم که دارای Consistency(ثباث) باشد، تضمین میدهد که نتیجه برگردانده شده، آخرین نتیجه ای است که بعد از تغییرات تمامی اساتید در سیستم، به دانشجو برگردانده می شود. ولی اگر سیستم توزیع شده ای Consistent نباشد، ممکن است در نتیجه برگردانده شده به این دانشجو، بعضی از آخرین تغییرات نمرات توسط اساتید در سیستم، اثر نداشته باشد.

Availability: به این معنا که یک Node سالم موجود در سیستم در یک زمان معقول، نتیجه درخواست را برگرداند(فکر کنم نیاز به توضیح دیگری نباشد!)

Partition Tolerance: هنگامی که یک(یا چند) Node(همان کامپیوتر) به دلیلی مثل خرابی شبکه، از دسترس خارج شد، سیستم بتواند به کار خود ادامه دهد.

تئوری CAP میگوید که شما حداکثر دو تا از سه مورد بالا را میتوانید در یک سیستم توزیع شده(مثلا یک پایگاه داده توزیع شده) با یکدیگر داشته باشید. مثلا اگر سیستم A و P را داشته باشد، دیگر نمیتواند C یا همان Consistency را نیز داشته باشد. برای مثال، در همان سیستم ثبت نمرات دانشجویان، اگر هر Node از سیستم بخواهد در زمان معقول پاسخ را برگرداند و همچنین با قطع یک یا چند Node، سیستم بتواند به کار خود ادامه دهد، دیگر نمیتوان گفت این سیستم آخرین نمرات ثبت شده را لزوما در محاسبات در نظر خواهد گرفت.

البته این تعریف پایه ای از نظریه CAP بود. در روزگار جدید اگر سیستم های توزیع شده Partition Tolerance را نداشته باشند، دیگر نمیتوان آن ها را سیستم توزیع شده نام گذاری کرد. بنابراین بعد از گذشت ۱۲سال از این نظریه، برخی بر این اعتقاد هستند که انتخاب شما یکی از Consistency یا Availability خواهد بود و همواره Partition Tolerance را خواهیم داشت.

در طراحی و معماری سیستم کاربردی توزیع شده باید نظریه CAP را در نظر گرفت و با توجه به نیازهای یک پروژه خاص، یکی از دو مورد Availability یا Consistency باید قربانی شود. همان طور که در تمام از پایگاه داده های توزیع شده، یکی از این دو مورد(یا بعضا یکی از سه مورد) قربانی می شود.

منابع این بحث و اطلاعات بیشتر

» این صفحه از وب سایت DZone

» مقاله InfoQ

» مقاله وبلاگ robertgreiner

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *