بازگشت به کتابخانهکتابخانه3.3Replication: کپی برای بقا و سرعت
طراحی سیستم نرم‌افزاری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 3.3فصل ۳لایه داده

Replication: کپی برای بقا و سرعت

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

یک رستوران زنجیره‌ای را تصور کن که فقط یک دفترچه دستور پخت در تهران دارد. شعبه شیراز هر بار زنگ می‌زند. اگر آن دفترچه سوخت، کل زنجیره می‌خوابد. راه‌حل: چند کپی زنده از همان دفترچه. در دیتابیس به این کار می‌گویند Replication.

سه شغل دارد: اگر یکی سوخت داده هست — Durability — خواندن‌ها بین شعب پخش می‌شوند — مقیاس Read — و داده به مشتری دور نزدیک می‌شود. نوشتن هنوز از یک جا می‌گذرد؛ این را با Sharding قاطی نکن.

آشپزخانه مرکزی و کپی دستور در شعب
آشپزخانه می‌پزد و می‌نویسد؛ شعب کپی دفترچه را می‌گیرند و سرو می‌کنند. Replication یعنی کپی زنده، نه یک دفترچه تنها.
DIAGRAMLeader می‌نویسد؛ Follower ها کپی می‌کنند و خواندن می‌دهند
Writes
Leader
Follower 1
Follower 2
Reads از Follower ها

چه کسی می‌نویسد، چه کسی کپی می‌کند

رایج‌ترین مدل مثل همان آشپزخانه مرکزی است: یک نفر می‌پزد، بقیه کپی می‌گیرند و مشتری را سرو می‌کنند. اسم‌ها را حفظ نکن؛ بپرس نوشتن از چند نقطه وارد می‌شود و کپی چقدر معطل می‌ماند.

Leader-Follower
همه نوشتن‌ها به Leader. Follower جریان تغییرات را دنبال می‌کند و خواندن سرو می‌کند. رایج‌ترین مدل؛ یک آشپز، چند پیشخدمت با کپی منو.
Sync Replication
Leader صبر می‌کند تا Follower تأیید کند. داده امن‌تر، نوشتن کندتر. برای پول و رزرو صندلی.
Async Replication
Leader معطل نمی‌ماند. سریع؛ ولی اگر Leader وسط راه سقوط کند، آخرین نوشته‌ها ممکن است فقط روی همان ماشینِ مرده مانده باشند.
Multi-Leader / Leaderless
چند نقطه نوشتن — چند شهر، چند دیتاسنتر. به قیمت حل تعارض. Cassandra مدل Leaderless با Quorum دارد.

دو دردسر کلاسیک

کپی زنده همیشه کمی عقب است، و رئیس همیشه زنده نمی‌ماند. هر دو را از قبل طراحی کن، نه بعد از تماس مشتری.

  • Replication Lag: کاربر پروفایلش را عوض می‌کند — نوشتن به Leader — و بلافاصله صفحه را می‌خواند از Follower عقب‌مانده. تغییرش را نمی‌بیند. راه‌حل: Read-Your-Writes — خواندن حساسِ همان کاربر تا چند ثانیه از Leader.
  • Failover: با مرگ Leader یک Follower ارتقا می‌یابد. خطر Split-Brain: اگر Leader قدیمی برگردد و هنوز فکر کند رئیس است، دو نقطه نوشتن متعارض داری. برای همین Failover خودکار به Quorum و Fencing نیاز دارد.

به زبان ساده

Replication یعنی چند کپی زنده از دفترچه دستور، تا سوختن یکی زنجیره را نخواباند.

مثال واقعی

اگر کاربر نامش را عوض کرد و فوراً نام قدیمی دید، از شعبه عقب‌مانده خوانده — Read-Your-Writes یعنی خود او را از Leader بخوان.

دانش‌سنجی

آزمون درس

۴ Q
01
Replication به‌تنهایی کدام را مقیاس می‌دهد؟
02
کاربر نامش را عوض می‌کند و رفرش می‌کند؛ نام قدیمی را می‌بیند. محتمل‌ترین علت؟
03
در Async Replication سقوط ناگهانی Leader چه خطری دارد؟
04
Split-Brain یعنی؟