ثبات قوی: در صورت لزوم
سازگاری قوی یک مدل است که در آن تمام عملیات ها به نظر می رسد که بلافاصله و به طور مداوم در یک نظم جهانی واحد سازگار با زمان واقعی انجام می شود. کاربر آخرین مقدار تایید شده را می خواند و دو مشتری موازی منطقی یکدیگر را نمی گیرند.
سازگاری دقیق یک مدل ذهنی ساده را ارائه می دهد و از ناورداهای سخت محافظت می کند، اما نیاز به هماهنگی دارد (quorums/leader)، که باعث افزایش تأخیر و حساسیت به پارتیشن های شبکه می شود.
1) هنگامی که قوی اجباری است
امور مالی و شهرک سازی
تعادل و نوشتن: «هزینه های دوگانه» غیر قابل قبول است.
انتقال و تسویه حساب: همان مقدار را نمی توان دو بار ارسال کرد.
موجودی و محدودیت
کالاهای باقی مانده/فضای هتل/بلیط: شما نمی توانید به ارزش های منفی بروید.
محدودیت های معامله در واحد زمان (محدودیت های اعتباری، اعتبارات API).
منحصر به فرد و یکپارچگی
منحصر به فرد deduplication logins/شناسه/قوانین.
ثابت در سطح دامنه: «≥1 پزشک باید در بخش مشغول به کار باشد»، «نمی تواند> N وظیفه فعال در صف وجود داشته باشد».
حسابرسی و بدون تغییر سیاهههای مربوط
رویدادهایی که به عنوان یک منبع قانونی حقیقت خدمت می کنند: نظم و کامل بودن بسیار مهم است.
اگر نقض ناوردا خطر کسب و کار غیر قابل قبول (از دست دادن پول، تحریم ها، از دست دادن اعتماد) - انتخاب قوی سازگاری.
2) دقیقا «سخت» است
خطی بودن (سطح عملیاتی): خواندن جدیدترین نوشتن موفق را می بیند. زمان احترام گذاشته شود.
Serializable (سطح معامله): نتیجه معادل اجرای معاملات به صورت متوالی است (می تواند قوی باشد، اما گاهی اوقات بدون یک دستور سخت در زمان واقعی اجرا می شود).
یک تفاوت مهم: Serializable محافظت در برابر ناهنجاری های سطح معامله (فانتوم/write-skew)، و Linearizable محافظت در برابر instantaneity تک و منظور از عملیات تک. اغلب شما به هر دو ویژگی نیاز دارید (به عنوان مثال، پول در پایگاه داده + ثبت رویداد).
3) سختی قیمت: PACELC و CAP
PACELC: هنگام تقسیم یک شبکه (P)، شما باید C (سختی) یا A (در دسترس بودن) را انتخاب کنید. قوی → CP: بهتر است به امتناع و یا مسدود کردن از نقض ناوردا. هنگامی که هیچ جدایی (EL) وجود ندارد، ما با L - p95/p99 در هماهنگی/quorums رشد می کنیم.
تمرین: قوی برای «هسته ناوردا»، در اطراف - پیش بینی سریع/کش با نهایی به طوری که UX رنج می برند نیست.
4) چگونه ثبات حاصل می شود
رهبری و quorums
تنها رهبر ضبط را می پذیرد ؛ خواندن - در رهبر و یا با حد نصاب کپی.
Quorum 'W' برای نوشتن و 'R' برای خواندن با 'R + W> N' شانس خواندن «آخرین» را بهبود می بخشد.
الگوریتم های تطبیق
قایق/Paxos: ورود به سیستم تکرار، تایید اکثریت، مدت/شاخص.
تکرار همزمان - رکورد تنها پس از تداوم در حد نصاب معتبر است.
ساعت و سفارش
ساعتهای منطقی TrueTime/Hybrid (HLC): عدم هماهنگی ساعت را برای سریال سازی ایمن جهانی محدود کنید.
نشانه های حصار/نسخه: حفاظت در برابر رهبران «صبح» و تقسیم مغز.
جداسازی معامله
Serializable (SI + conflict checking/lock): حفاظت در برابر فانتوم/write-skew.
دقیق سریال: سریال سازی + خطی بودن نسبت به زمان واقعی.
5) چند منطقه: گزینه ها و تجارت آف
رهبر جهانی (CP)
سوابق از طریق یک منطقه پیشرو می روند ؛ خواندن - کش های محلی/پیش بینی ها یا از طریق یک رهبر.
مزایا: مدل ساده. منفی: p95/RTT به رهبر، با P - قفل رکورد.
رهبران منطقه ای + حد نصاب همزمان
از نظر جغرافیایی از چندین منطقه گسترش یافته است ؛ هر رکورد در انتظار تایید> 50٪ است.
مزایا: بدون یک «گردن باریک»، ثبات بالا. منفی: تاخیر بین قاره ای.
تقسیم بندی جغرافیایی
اطلاعات خانه برای منطقه (مستاجر/صلاحیت) ؛ عملیات جهانی - از طریق sagas/aggregates.
مزایا: تاخیر کم برای ضبط محلی. معایب: برنامه ریزی مرزهای داده.
6) تنظیم R/W و خواندن
ورودی ها: «W = اکثریت» استاندارد برای قوی است.
خواندن:- «تازه ترین» - «R = اکثریت» یا خواندن در رهبر.
- برای کاهش L - «stale-ok» خواندن از کپی برای صفحه نمایش ثانویه (به صراحت در UX مشخص شده است).
- خوانده شده تعمیر/اجاره نامه به عنوان خوانده شده: بهینه سازی بدون از دست دادن شدت برای اجاره کوتاه از رهبر.
7) عملکرد و UX
تاخیر: تمرکز بر RTT بین مشتری و رهبر/حد نصاب (بین منطقه ای صدها میلی ثانیه).
الگوی «نوشتن قوی، خواندن سریع»: قوی در نوشتن + کش/طرح ریزی در خواندن، با RYW برای نویسنده.
دسته/بسته: سوابق گروه، اما مراقب تاخیر دم.
خطوط تخریب: در یک حادثه - فقط خواندنی، وضعیت صادقانه، ممنوعیت جهش های خطرناک.
8) مشاهده مسیر دقیق
معیارهای اندازه گیری
تأخیر p50/p95/p99: نوشتن حد نصاب، خواندن حد نصاب، قرائت رهبری.
موفقیت حد نصاب، تکرار/برگشت، تغییرات رهبر.
تاخیر تکرار (انتظار می رود کوچک، اما نظارت اجباری است).
سهم «استیل» خوانده شده (اگر شامل).
ردیابی
محدوده: «پذیرش رهبر»، «تکرار»، «حد نصاب تعهد».
Теги: 'term', 'leader _ id', 'quorum _ size', 'region'.
هشدارها
رشد p95/p99، رهبر انتخابات مجدد مکرر، زمان سهمیه بندی، شاخص های تقسیم مغز.
9) آزمون و هرج و مرج
Jepsen مانند: پارتیشن های شبکه، تاخیر، قطره، ساعت skew.
ایمنی ثابت: عدم امکان هزینه های دوگانه/تعادل منفی/رزرو دوگانه.
رهبری: امتناع رهبر، انتخاب مجدد تحت بار، نشانه حصار.
خواندن سازگاری: خواندن بلافاصله پس از نوشتن باید «جدید» را ببینید (RYW/خواندن خطی).
10) کتاب های حادثه
Quorum loss: به حالت فقط خواندنی تغییر وضعیت دهید، به مشتریان اطلاع دهید، در صورت وجود پارتیشن بندی جغرافیایی، ورودی را به منطقه «خانه» ارسال کنید.
رشد تاخیر بین منطقه ای است: به طور موقت کاهش حجم سوابق سخت (مهاجرت برخی از جریان در صف/پیش بینی)، محلی سازی ترافیک.
Leader Flap: افزایش زمان انتخابات، بررسی شبکه ها/رانندگی ساعت/توقف GC.
تقسیم مغز: فعال کردن حصار-نشانه/اجاره-چک, متوقف کردن رهبران قدیمی در سطح اپراتور.
11) خطاهای معمول
تقاضای قوی «در همه جا»: انفجار تاخیر و هزینه به جای تمرکز بر متغیرهای.
تلاش برای CA تحت تقسیمات واقعی: در نقطه P، سیستم هنوز هم انتخاب می کند، اغلب به طور ضمنی.
نوشتن دوگانه به مناطق مختلف بدون sagas/هماهنگ کننده: فانتوم ها و از دست دادن ناورداها.
عدم وجود RYW: کاربر موجودیت تازه ثبت شده خود را نمی بیند - کاهش اعتماد.
نادیده گرفتن ساعت: بدون مرزهای HLC/TrueTime، زمان و مسابقه «پریدن» آسان است.
هیچ برنامه تخریب وجود ندارد: در P، شکست جزئی هرج و مرج شروع می شود.
12) رفع سریع (دستور العمل)
پرداخت/تعادل: رهبر + اکثریت quorum ؛ معاملات دقیق سریال کوتاه مدت، شکست سخت در P.
رزرو (صندلی/اسلات): نوشتن قوی از طریق رهبر، می خواند - کش با RYW ؛ TTL-ذخایر + TCC.
SaaS جهانی: تقسیم جغرافیایی توسط «مستاجر/منطقه» ؛ عملیات دقیق در منطقه خانه، گزارش/جستجو - از طریق پیش بینی.
حسابرسی/ورود به سیستم: ضمیمه فقط CP-ورود به سیستم ؛ خواندن می تواند ذخیره شود، اما با نقاط بازرسی تایید شده است.
13) چک لیست پیش فروش
- ثابت نیاز به قوی نوشته شده بود; بقیه در AP/طرح است.
- رهبر واحد/quorum بین منطقه ای/geo-partition انتخاب شده است.
- پیکربندی "W = اکثریت"، "R = رهبر" اکثریت "برای مسیرهای بحرانی.
- RYW/یکنواخت ارائه شده برای UX ؛ به صراحت «stale-ok» مشخص شده است.
- شامل معیارهای حد نصاب, عقب ماندگی, تاخیر; هشدار در p95/p99 و انتخاب مجدد.
- یک برنامه تخریب وجود دارد: فقط خواندنی، غیرفعال کردن جهش های خطرناک، صف برای «پس از طوفان».
- آزمون هرج و مرج: تقسیم, ساعت انحراف, شکست رهبر; متغیرهای ایمنی بررسی شدند.
- اسناد قرارداد: چه سخت است، چه «ممکن است پشت»، ارتباطات برای محصول/پشتیبانی.
نتیجه گیری
سازگاری قوی یک ابزار برای محافظت از حقیقت است که خطا غیر قابل قبول است. آن را در اطراف ناورداهای سخت اعمال کنید، آگاهانه برای هماهنگی با تاخیر و در دسترس بودن در طوفان پرداخت کنید. ترکیب: CP-kernel برای بحرانی، AP-خواندن و طرح ریزی برای سرعت. با استفاده از تله متری، تخریب و تست های مناسب، هم صحت و هم تجربه کاربر را حفظ خواهید کرد.