طراحی News Feed و سیستم چت

دو مطالعه موردی پایانی: News Feed (Fan-out Push/Pull) و سیستم چت (WebSocket) + جمع‌بندی کل دوره

مطالعه ۱: News Feed

«تایم‌لاین توییست/اینستاگرام را طراحی کنید» — مسئله قلب: پست جدید چطور به فالوورها برسد؟

رویکرد Pull (کشیدن)

هنگام باز کردن تایم‌لاین: پست‌های همه فالوورها را بگیر + مرتب کن

رویکرد Push (Fan-out on Write)

هنگام پست‌گذاری: به تایم‌لاین (کش) همه فالوورها اضافه کن

پست جدید → صف پیام → Fan-out Workerها
                        ↓
         timeline:فالوور۱ ← پست
         timeline:فالوور۲ ← پست
         ... (۱M فالوور = ۱M نوشتن!)

راه‌حل هوشمند: Hybrid

مطالعه ۲: سیستم چت

چالش‌های خاص:

کاربر A ←WebSocket→ Handler ۱ ←Queue→ Handler 2 ←WebSocket→ کاربر B
                        ↓
                     Message Store (تاریخچه)

جمع‌بندی کل دوره

مسیر طی‌شده:

  1. مبانی: ویژگی‌ها، تخمین، چارچوب مصاحبه
  2. مقیاس: LB، Reverse Proxy
  3. کش: LRU، الگوها، بحران‌ها
  4. دیتابیس: SQL/NoSQL، تکرار، شاردینگ، ایندکس
  5. توزیع‌شدگی: CAP، صف، Pub-Sub، میکروسرویس
  6. اجزا: CDN، Redis، Elasticsearch، S3، Rate Limiter
  7. الگوها: Snowflake، قفل، Consistent Hashing، Circuit Breaker
  8. مطالعات: URL Shortener، Feed، چت
پیام نهایی: System Design = زبان ترید‌آف‌ها. هر ابزار این دوره یک «چرا» دارد — آن چرا را بلند بگویید، دیاگرام بکشید، اعداد تخمین بزنید. حالا شما مثل یک مهندس ارشد فکر می‌کنید!

گام‌های بعدی

این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.

ابزارهای مرتبط