CAP قضیه – سه جبهه که نمی توانید یکباره برنده شوید

در رویای هر مهندس ، سیستم ایده آل این خواهد بود:
- همیشه سازگار است (داده ها در همه زمان ها کاملاً هماهنگ هستند) ،
- همیشه در دسترس است (بدون خطا ، بدون وقفه) ،
- و کاملاً تحت تأثیر مشکلات شبکه قرار نگرفته است.
اما واقعیت بسیار سخت تر است.
هنگامی که شما یک سیستم توزیع شده ایجاد می کنید – سیستمی با گره های متعدد و سرور که از طریق یک شبکه ارتباط برقرار می کنند – متوجه خواهید شد:
شما نمی توانید همه آن را داشته باشید.
شما باید حداقل یک عامل را فدا کنید.
این جوهر قضیه -یکی از اصول بنیادی که تمام سیستم های پر بار را شکل می دهد.
CAP قضیه: در اصل آن ، مربوط به تجارت است
CAP مخفف سه ویژگی است:
-
قوام (ج):
هر گره همزمان همان داده ها را می بیند. -
در دسترس بودن (الف):
سیستم همیشه به جای اینکه ساکت باشد یا زمان بندی بماند ، به درخواست ها پاسخ می دهد – حتی اگر فقط با یک خطای معتبر باشد. -
تحمل پارتیشن (P):
این سیستم حتی در صورت وقوع پارتیشن های شبکه بین گره ها ، همچنان به کار خود ادامه می دهد.
قضیه کلاه بیان می کند:
وقتی یک پارتیشن شبکه اتفاق می افتد ، باید بین انتخاب کنید ثبات وت در دسترس بودنبشر
شما نمی توانید به طور همزمان برای هر دو بهینه سازی کنید.
یک قیاس در دنیای واقعی: معاملات بانکی بین شعب
این را تصور کنید: شما دو شعبه بانکی در دو شهر مختلف دارید که از طریق یک شبکه متصل می شوند. یک روز ، ارتباط بین دو شاخه از بین می رود.
اکنون:
-
اگر اولویت بندی کنید ثبات: سیستم از هر معامله خودداری می کند زیرا نمی تواند داده های هماهنگ شده را تضمین کند. کاربران خطاها یا معاملات ناموفق (افت در دسترس بودن) را تجربه می کنند.
-
اگر اولویت بندی کنید در دسترس بودن: این سیستم هنوز هم به معاملات محلی اجازه می دهد و آنها را به طور موقت برای هماهنگی بعدی ذخیره می کند. اما خطر وجود دارد ناسازگاری داده های موقتبشر
شما فقط می توانید در این شرایط یک اولویت را انتخاب کنید.
سه نوع سیستم توزیع شده تحت CAP
بسته به نیازهای تجاری ، سیستم های دنیای واقعی تجارت مختلفی را انجام می دهند:
1. سیستم های CP (ثبات + تحمل پارتیشن)
درست کردن صحیح داده های مطلق ، حتی اگر به معنای خرابی باشد.
مثال: سیستم های بانکی ، کیف پول دیجیتال.
هنگامی که یک مسئله شبکه رخ می دهد – سیستم ترجیح می دهد درخواست را نسبت به داده های نادرست ریسک رد کند.
2. سیستم های AP (در دسترس بودن + تحمل پارتیشن)
بدون توجه به چه چیزی ، درخواست های خدمت را در اولویت قرار دهید ، و ناسازگاری موقت را بپذیرید.
مثال: شبکه های اجتماعی ، بازارهای بزرگ.
هنگامی که یک مسئله شبکه رخ می دهد – کاربران هنوز هم می توانند وضعیت را ارسال کنند یا مواردی را خریداری کنند ، حتی اگر هماهنگ سازی داده ها به طور موقت از عقب عقب باشد.
3. سیستم های CA (قوام + در دسترس بودن)
اینها فقط وجود دارند در تئوری یا در سیستم های غیر توزیع شده (تنظیمات تک گره یا شبکه های کاملاً پایدار).
در سیستم های توزیع شده واقعی ، تحمل پارتیشن غیر قابل مذاکره استبشر
استفاده از کلاه در سیستم های واقعی
شما باید تصمیم بگیرید:
-
اولویت بندی قوام هنگامی که خطاهای داده می تواند عواقب شدیدی را به همراه داشته باشد (به عنوان مثال ، بانک ها ، معاملات مالی).
-
در دسترس بودن اولویت بندی هنگامی که تجربه کاربر بسیار مهم است ، و ناسازگاری موقت قابل قبول است (به عنوان مثال ، اخبار ، لایک ، نظرات).
هیچ حق یا غلط مطلق وجود ندارد.
فقط گزینه هایی که با اهداف تجاری و انتظارات کاربر مطابقت دارد.
مثال عملی: دوست داشتن یک پست در رسانه های اجتماعی
روی دکمه “مانند” روی یک پست ضربه می زنید.
-
اگر سیستم اولویت بندی کند در دسترس بودن، مانند نماد مانند بلافاصله روی صفحه شما به روز می شود – حتی اگر همگام سازی با سرورهای دیگر کامل نباشد.
-
اگر سیستم اولویت بندی کند ثباتاگر سرور نتواند عمل را فوراً تأیید کند ، ممکن است باید 1-2 ثانیه صبر کنید یا حتی خطایی را مشاهده کنید.
هر انتخابی با هزینه خاص خود همراه است.
tl ؛ دکتر
ساختن یک سیستم با بار بالا فقط مربوط به تعالی فنی نیست.
این یک هنر است انتخاب عاقلانه وت پذیرش معاملاتبشر
وقتی کلاه را می فهمید ، خواستار “همه چیز به یکباره” هستید.
شما شروع به پرسیدن سوالات دقیق تر می کنید:
- “چه چیزی برای اولویت بندی در اینجا لازم است؟”
- “آیا تأخیر اضافه شده برای کاربران قابل قبول است؟”
- “چه سطح سازگاری به اندازه کافی خوب است؟”
خواندن بیشتر
اگر این مقاله را مفید دانستید و علاقه مند به بهینه سازی الگوریتم ها و احترام به تفکر الگوریتمی خود هستید ، من ذهنیت الگوریتم کتاب را به شدت توصیه می کنم. این فقط شما را از طریق حل مسئله در دنیای واقعی طی نمی کند ، بلکه به شما کمک می کند تا یک طرز فکر الگوریتمی را به طرز بصری ترین روش پرورش دهید.