نشان دیپکدهدیپکده
مهندسی نرم افزار

۲ - معماری داده‌های توزیع‌شده

دوره پیش نیاز: مبانی طراحی سیستم‌های داده‌محور

دوره متنی و تعاملی
سیدمهدی حسین زاده
سیدمهدی حسین زاده
۲ - معماری داده‌های توزیع‌شده

درباره دوره

معرفی دوره

وقتی حجم داده‌ها، نرخ ترافیک نوشتن و خواندن، یا نیازمندی‌های دسترسی‌پذیری جغرافیایی از توان یک ماشین واحد فراتر می‌رود، چاره‌ای جز ورود به دنیای سیستم‌های توزیع‌شده وجود ندارد. با این حال، توزیع داده‌ها بهای سنگینی به همراه دارد: شبکه‌های نامطمئن با قطعی‌های غیرمنتظره، ساعت‌های سخت‌افزاری با انحراف زمانی، ناهماهنگی در کپی داده‌ها و پدیده شکست‌های جزئی (Partial Failures).

در این دوره بر اساس بینش‌های عمیق کتاب مرجع Designing Data-Intensive Applications اثر مارتین کلپمن، گام‌به‌گام با اصول معماری داده‌های توزیع‌شده آشنا می‌شوید. از استراتژی‌های رپلیکیشن و تکنیک‌های پارتیشن‌بندی گرفته تا مدیریت ساعت‌های نامطمئن، تضمین‌های خطی‌پذیری و پروتکل‌های اجماع توزیع‌شده، تمامی مفاهیم همراه با سناریوهای ملموس مهندسی و چالش‌های تعاملی پلتفرم دیپ یار کالبدشکافی می‌شوند.

سرفصل‌های دوره:
  • فصل ۱ — چرا توزیع می‌کنیم و اصل طراحی برای شکست: انگیزه‌های مقیاس‌پذیری و پایایی، درک شکست‌های جزئی و دگرگونی تفکر در سیستم‌های توزیع‌شده.
  • فصل ۲ — استراتژی‌های رپلیکیشن و ناهنجاری‌های تأخیر: کالبدشکافی مدل‌های تک‌لیدری، چندلیدری و بدون لیدر، تضمین‌های سازگاری و تکنیک کووروم (Quorum).
  • فصل ۳ — پارتیشن‌بندی و توزیع بار: تقسیم داده بر اساس بازه کلید و هش، هشینگ پایدار (Consistent Hashing) و چالش‌های شاخص‌های ثانویه.
  • فصل ۴ — شبکه‌های نامطمئن، ساعت‌ها و توقف‌های زمانی: خطرات ساعت‌های سخت‌افزاری، پرش‌های زمانی، توقف‌های GC و تکنیک Fencing Tokens.
  • فصل ۵ — خطی‌پذیری، اجماع و تعهد توزیع‌شده: تفاوت خطی‌پذیری و سریال‌پذیری، قضیه CAP، پروتکل‌های 2PC، Raft و Paxos.
  • فصل ۶ — پروژه نهایی و ارزیابی جامع: طراحی گام‌به‌گام معماری پایگاه داده توزیع‌شده برای یک سرویس مقیاس بزرگ جهانی و آزمون جامع پایانی.
اهداف و دستاوردهای یادگیری:
  • انتخاب استراتژی رپلیکیشن بهینه (تک‌لیدری، چندلیدری و بدون لیدر Dynamo-style) متناسب با نیازمندی‌های بار و تحمل خطا
  • شناسایی و خنثی‌سازی ناهنجاری‌های ناشی از تأخیر رپلیکیشن از طریق تضمین‌های سازگاری نظیر Read-Your-Own-Writes و Monotonic Reads
  • طراحی معماری پارتیشن‌بندی مقیاس‌پذیر با استفاده از هشینگ پایدار (Consistent Hashing) و مدیریت ایندکس‌های ثانویه
  • تحلیل عمیق خطرات ساعت‌های نامطمئن، انحرافات زمانی و توقف‌های Garbage Collection و پیاده‌سازی مکانیزم‌های Fencing
  • تمایز دقیق خطی‌پذیری (Linearizability) از سریال‌پذیری (Serializability) و تحلیل محدودیت‌های قضیه CAP
  • ارزیابی پروتکل‌های اجماع توزیع‌شده (Raft, Paxos, Zab) در مقایسه با تعهد دو مرحله‌ای (2PC) در شرایط شکست شبکه

سرفصل‌ها و درس‌ها

ساختار دوره را فصل به فصل مرور کن و هر ویدیو را پخش کن.

6 فصل
چرا داده‌ها را توزیع می‌کنیم و طراحی برای شکست4 درس
01معرفی و اهداف فصل: چرا داده‌ها را توزیع می‌کنیم و طراحی برای شکست
02چرا داده‌ها را توزیع می‌کنیم؟
03طراحی برای شکست در سیستم‌های توزیع‌شده
04آزمون فصل ۱: چرا توزیع می‌کنیم و طراحی برای شکست
استراتژی‌های رپلیکیشن و ناهنجاری‌های تأخیر5 درس
01معرفی و اهداف فصل: استراتژی‌های رپلیکیشن و ناهنجاری‌های تأخیر
02معماری‌های رپلیکیشن: تک‌لیدری، چندلیدری و بدون لیدر
03تأخیر رپلیکیشن و تضمین‌های سازگاری
04کووروم خواندن و نوشتن در معماری بدون لیدر
05آزمون فصل ۲: استراتژی‌های رپلیکیشن و ناهنجاری‌های تأخیر
پارتیشن‌بندی و توزیع بار در سیستم‌های داده5 درس
01معرفی و اهداف فصل: پارتیشن‌بندی و توزیع بار در سیستم‌های داده
02استراتژی‌های پارتیشن‌بندی: بازه کلید در برابر هش
03هشینگ سازگار و توازن مجدد بار
04چالش نمایه‌های ثانویه در دیتابیس‌های توزیع‌شده
05آزمون فصل ۳: پارتیشن‌بندی و توزیع بار در سیستم‌های داده
شبکه‌های نامطمئن، ساعت‌ها و اجماع4 درس
01معرفی و اهداف فصل: شبکه‌های نامطمئن، ساعت‌ها و اجماع
02شبکه‌های نامطمئن و خرابی‌های جزئی
03ساعت‌های نامطمئن و جابجایی زمان
04آزمون فصل ۴: شبکه‌های نامطمئن، ساعت‌ها و اجماع
خطی‌پذیری، اجماع و تعهد توزیع‌شده4 درس
01معرفی و اهداف فصل: خطی‌پذیری، اجماع و تعهد توزیع‌شده
02خطی‌پذیری و سریال‌پذیری: تمایز ظریف سازگاری
03اجماع توزیع‌شده و تعهد اتمیک
04آزمون فصل ۵: خطی‌پذیری، اجماع و تعهد توزیع‌شده
پروژه نهایی و ارزیابی جامع3 درس
01معرفی و اهداف فصل: پروژه نهایی و ارزیابی جامع
02پروژه نهایی: طراحی معماری سیستم جهانی
03آزمون جامع پایانی: معماری داده‌های توزیع‌شده