بازگشت به کتابخانهکتابخانه14.1Replication بدون Leader: مدل Dynamo
طراحی سیستم نرم‌افزاریSYSTEM DESIGNاز صفر تا تسلط
v1.0.0
01مبانی و تصویر بزرگ
02Scalability و ظرفیت
03لایه داده
04Cache، Queue و جریان
05معماری نرم‌افزار
06قابلیت اطمینان و عملیات
07متد طراحی
08Case Study های واقعی
09سیستم‌های توزیع‌شده عمیق
10مهندسی تولید: داده، امنیت و کارایی
11تمرین پیشرفته و کیس‌استادی‌های مکمل
12زیر کاپوت دیتابیس و معماری داده
13وب بلادرنگ و پروتکل‌های مدرن
14سیستم‌های توزیع‌شده پیشرفته
15SaaS ،SRE ،امنیت و شبکه پیشرفته
16طراحی سیستم در عصر AI
17Case Study های تکمیلی
LESSON 14.1فصل ۱۴سیستم‌های توزیع‌شده پیشرفته

Replication بدون Leader: مدل Dynamo

  • ~۱۴ دقیقه
  • ۴ پرسش
  • متن را انتخاب کن تا هایلایت شود

در فصل ۳ replication با Leader را دیدیم: یک نقطه تصمیم‌گیرنده برای نوشتن. خانواده دیگری هم هست — Leaderless: هر نود می‌تواند نوشتن بپذیرد. Cassandra و DynamoDB این‌جایی‌اند؛ قیمتش، تعارض و کهنگی است و دراینش، دسترس‌پذیری بی‌وقفه نوشتن.

DIAGRAMنوشتن و خواندن با Quorum
Client
هر نود می‌پذیرد
W نسخه تأیید نوشتن
R نسخه برای خواندن
W+R > N → تازگی

چهار مکانیزم که Dynamo را Dynamo می‌کند

Sloppy Quorum
اگر نودهای مسئول یک کلید داون‌اند، نود دیگری موقتاً نوشتن را نگه می‌دارد — availability در هزینه سازگاری: «همیشه بنویس».
Hinted Handoff
نود موقت، رکورد را با «راهنما» نگه می‌دارد؛ وقتی نود اصلی برگشت، داده را تحویلش می‌دهد و پاک می‌کند.
Read Repair
هنگام خواندن، نودها پاسخ‌هایشان را مقایسه می‌کنند؛ نسخه کهنه‌تر درجا به‌روز می‌شود — خواندن، خودش ترمیم است.
Anti-Entropy + Merkle Tree
فرایند پس‌زمینه برای یافتن ناهماهنگی: درخت هش از داده؛ مقایسه ریشه‌ها ناهماهنگی را در چند پرش پیدا می‌کند بدون کپی کل داده.

تعارض: بهای نوشتن همه‌جا

  • دو کلاینت همزمان روی یک کلید در دو نود بنویسند → دو نسخه متعارض. راه‌ها: Last-Write-Wins (ساده، ولی ممکن است داده را بی‌صدا حذف کند)، Vector Clock/Versioning برای تشخیص همزمانی، یا merge در سطح اپلیکیشن (سبد خرید Dynamo معروف است: اجتماع آیتم‌ها).
  • CRDT (فصل ۹) برای داده‌هایی که merge جبری دارند؛ برای بقیه، قانون دامنه بنویس نه LWW کورکورانه.
  • Consistency Level را per-query می‌توان تنظیم کرد: ONE سریع و کهنه‌محتمل، QUORUM متعادل، ALL سخت‌گیر — همان پنجره N/W/R فصل ۳ در عمل.

به زبان ساده

در مدل Dynamo هیچ رئیسی نیست؛ چند نسخه می‌نویسند و خواندن با رأی‌گیری (quorum) صحت می‌گیرد — اگر دو نسخه ناسازگار شدند، خودِ اپلیکیشن باید تصمیم بگیرد.

مثال واقعی

سبد خرید آمازون را هرگز «به‌خاطر خرابی سرور» نمی‌بندند؛ هر نسخه‌ای از سبد که رسید نگه می‌دارند و هنگام خواندن ادغام می‌کنند — فروش از سازگاری مهم‌تر است.

دانش‌سنجی

آزمون درس

۴ Q
01
Sloppy Quorum چه مشکلی را حل و چه مشکلی را می‌سازد؟
02
Anti-entropy با Merkle Tree چطور ناهماهنگی را پیدا می‌کند؟
03
در Cassandra برای «خواندن همیشه-تازه در حالت عادی» با RF=3 چه سطحی؟
04
چرا LWW برای «سبد خرید» خطرناک است؟