بازگشت به کتابخانهکتابخانه8.4Case Study: استریم ویدیو (یوتیوب)
طراحی سیستم نرم‌افزاری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 8.4فصل ۸Case Study های واقعی

Case Study: استریم ویدیو (یوتیوب)

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

مسئله: آپلود ویدیو توسط سازنده‌ها و پخش روان برای میلیاردها بیننده با هر کیفیت اینترنت. دو خط لوله کاملاً جدا: Ingest (سنگین، async) و Playback (داغ، CDN محور).

۱-۲) نیازمندی و تخمین

  • FR: آپلود، پردازش/کیفیت‌های متعدد، پخش تطبیقی، metadata و جستجو، شمارش بازدید.
  • NFR: شروع پخش <2s؛ بدون قطعی؛ آپلود تا چند GB مقاوم به قطعی.
  • فرض: 500 ساعت ویدیو آپلود در دقیقه؛ نسبت تماشا به آپلود نجومی — Read-Heavy مطلق.

۳) طراحی — خط لوله آپلود

DIAGRAMIngest async
Creator
Object Storage — raw
Kafka
Transcode workers
Storage نسخه‌ها → CDN
  • آپلود resumable و تکه‌تکه، مستقیم به Object Storage (URL امضاشده) — از App Server ها رد نمی‌شود.
  • Transcoding: ویدیو به segment های چند-ثانیه‌ای شکسته و هر کدام به چند کیفیت (240p تا 4K) رمز می‌شود — موازی روی صدها worker از طریق صف؛ وضعیت در DB (uploaded → processing → live).
  • خروجی: HLS/DASH — playlist + segment ها؛ پخش‌کننده هر چند ثانیه کیفیت را با پهنای باند لحظه‌ای عوض می‌کند (Adaptive Bitrate).

۴) مسیر پخش و عمق

  • Playback: کلاینت playlist را می‌گیرد؛ segment ها از CDN — ویدیوهای داغ در لبه‌ها، دم بلند از origin با کش pull.
  • Metadata (عنوان، کانال، آمار): DB جدا + کش سنگین؛ جستجو در Elasticsearch.
  • شمارش بازدید: دقیق‌بودن لحظه‌ای لازم نیست — رویداد به Kafka، تجمیع پنجره‌ای، به‌روزرسانی دوره‌ای. جلوی تقلب: فیلتر و heuristics آفلاین.
  • پیشنهاد ویدیو: خط ML جدا — کاندید + رتبه، خوراکش همان رویدادهای تماشا.

به زبان ساده

یوتیوب یعنی سه مسیر جدا: آپلود و پردازش سنگین (تبدیل به کیفیت‌ها)، ذخیره و پخش از CDN نزدیک، و داده‌کاوی روی رویدادهای تماشا.

مثال واقعی

وقتی ویدیو آپلود می‌کنی، فایل اصلی به قطعات می‌رود و در صف تبدیل به ۴K تا ۱۴۴p می‌نشیند؛ پخش از سرور لبه نزدیک توست نه از دیتاسنتر اصلی.

دانش‌سنجی

آزمون درس

۳ Q
01
چرا ویدیو به segment های کوچک شکسته می‌شود؟
02
مسیر درست آپلود فایل 2GB؟
03
شمارنده بازدید چطور مقیاس می‌گیرد؟