سازگاری نهایی و مدل‌های سازگاری

طیف مدل‌های سازگاری: Strong، Eventual و Causal — با مثال‌های واقعی و انتخاب مدل مناسب هر داده

طیف سازگاری

سازگاری «صفر و یکی» نیست — یک طیف است:

۱. Strong (قوی)

بعد از نوشتن، همه بلافاصله همان را می‌بینند. مثل تک‌سرور!

۲. Eventual (نهایی) — رایج‌ترین

اگر نوشتن جدیدی نباشد، بالاخره همه نودها هم‌رنگ می‌شوند:

مثال آشنا: کامنت می‌گذاری؛ دوستت «همین الان» نمی‌بیند — چند ثانیه بعد می‌بیند. دنیا تمام نشد!

۳. Causal (علّی)

بین Strong و Eventual: روابط علّی حفظ می‌شوند:

علی: «سالی، سلام!» (پیام ۱)
سارا: «علی، وعده‌وات!» (پاسخ به ۱)

قاعده Causal: هیچ‌کس پاسخ را «قبل از» پیام نبیند!
(اما پیام‌های بی‌ربط ممکن است جابه‌جا دیده شوند)

پیاده‌سازی: نسخه‌های برداری (Vector Clocks) — پیچیده اما منطق گفتگو را حفظ می‌کند.

مقایسه

مدلتضمینسرعت نوشتنکاربرد
Strongهمیشه آخرینکندپول، رزرو
Causalترتیب علّیمتوسطچت، کامنت
Eventualبالاخره هم‌رنگسریع ✓تایم‌لاین، لایک

سازگاری به ازای هر داده!

سیستم هوشمند، مدل متفاوت برای داده متفاوت:

فروشگاه آنلاین:
- پرداخت: Strong (پول!)
- موجودی کالا: Strong (فروش دوباره = فاجعه)
- تعداد لایک: Eventual (چند ثانیه دیر؟ مهم نیست)
- نظرات: Causal (پاسخ قبل از سؤال؟ گیج‌کننده!)
نکته: «Read-Your-Own-Writes» یک تضمین عملی بینابین است: کاربر نوشته خودش را همیشه فوری ببیند (حتی اگر بقیه داده eventual باشد) — تجربه کاربری نجات می‌یابد!

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.

ابزارهای مرتبط