بازگشت به کتابخانهکتابخانه14.3Gossip ،تشخیص خرابی و Paxos
طراحی سیستم نرم‌افزاری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.3فصل ۱۴سیستم‌های توزیع‌شده پیشرفته

Gossip ،تشخیص خرابی و Paxos

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

یک خوشه ۱۰۰۰نودی چطور می‌فهمد چه کسی زنده است، بدون اینکه یک «رئیس مرکزی» همه را پینگ کند؟ و قبل از Raft، پدربزرگ اجماع — Paxos — چطور کار می‌کرد؟ این درس دو تکه گمشده پازل فصل ۹ است.

Gossip: خبرسازی اپیدمیک

  • هر نود هر ~۱ ثانیه با چند نود تصادفی حرف می‌زند و دفترچه وضعیت (heartbeat + incarnation number هر نود) را رد و بدل می‌کند — خبر در O(log n) دور به همه می‌رسد.
  • مقیاس‌پذیر و بدون نقطه مرکزی: Cassandra برای عضویت و metadata، Redis Cluster برای توپولوژی، Consul/Serf برای سرویس‌ها از همین مدل استفاده می‌کنند.
  • Gossip در نهایت همگراست (eventual): برای چند ثانیه ممکن است دو نود نظر متفاوت درباره زنده‌بودن یک نود داشته باشند — برای تصمیم حیاتی (فنسینگ) به آن تکیه نکن.

تشخیص خرابی: timeout ثابت ممنوع

SWIM
پروتکل عضویت: پینگ مستقیم؛ اگر جواب نیامد، چند نود واسطه پینگ غیرمستقیم می‌زنند (شاید شبکه بین ما قطع است نه خودش)؛ بعد مرحله suspicion تا اعلام مرگ.
Phi Accrual
به‌جای «مرده/زنده» یک احتمال پیوسته: توزیع تاریخچه heartbeat ها مدل می‌شود و φ می‌گوید چقدر دیرشدن فعلی غیرعادی است؛ آستانه را تو تنظیم می‌کنی (۸ = محافظه‌کار، ۱۲ = صبور). Cassandra از همین استفاده می‌کند.
چرا مهم است
timeout ثابت در شبکه نویزی یا false positive می‌سازد (فنسینگ اشتباه = split-brain) یا دیر فهمیدن یعنی outage طولانی‌تر.

Paxos در پنج دقیقه

  • نقش‌ها: Proposer (پیشنهاددهنده مقدار)، Acceptor (رأی‌دهنده)، Learner (یادگیرنده نتیجه).
  • فاز Prepare: پیشنهاددهنده با شماره n از اکثریت قول می‌گیرد «به شماره کوچک‌تر رأی نده» و آخرین مقدار پذیرفته‌شده را می‌شنود.
  • فاز Accept: مقدار (خودش یا آخرین پذیرفته‌شده) را با همان n می‌فرستد؛ اکثریت که پذیرفتند، مقدار chosen است.
  • Basic-Paxos برای یک مقدار است؛ برای لاگِ دنباله‌دار به Multi-Paxos (با leader پایدار) نیاز داری — و دقیقاً همین پیچیدگیِ فهم و پیاده‌سازی بود که Raft را به وجود آورد: Raft همان اجماع است، اما به‌گونه‌ای نوشته شده که آدم‌ها بتوانند درست پیاده‌اش کنند.

به زبان ساده

Gossip یعنی خبرها مثل شایعه دهان‌به‌دهان بین گره‌ها می‌چرخد تا همه بفهمند کی زنده است؛ و Paxos قدیمی‌ترین راه اثبات‌شده توافق است که Raft آن را خوانا کرد.

مثال واقعی

در باشگاه، خبر مرخصی فلانی را هرکس به چند نفر می‌گوید و طی چند دقیقه همه می‌دانند — بدون اطلاعیه رسمی؛ دیتابیس Cassandra همین‌طور سلامت اعضا را پخش می‌کند.

دانش‌سنجی

آزمون درس

۴ Q
01
چرا SWIM پینگ غیرمستقیم دارد؟
02
مزیت Phi Accrual بر timeout ثابت؟
03
خبر «نود X عضو شد» در خوشه ۱۰۰۰تایی با gossip چقدر طول می‌کشد؟
04
چرا با وجود Paxos، Raft اختراع شد؟