Real case study'lar — mashhur tizimlar qanday qurilgan
Nazariyani real misolda ko'rish — eng kuchli o'rganish. Bu yerda mashhur ilovalarning soddalashtirilgan arxitekturasi tahlil qilinadi. Maqsad — "qanday ishlaydi?" degan savolga muhandis ko'zi bilan javob.
Bu — soddalashtirilgan, ta'limiy modellar (haqiqiy tizimlar ancha murakkab). G'oyani tushunish uchun.
1. Instagram — fotosurat ulashish
Asosiy muammo: millionlab rasm, tez lenta, juda ko'p o'qish.
Yuklash: Client App Object Storage (rasm) + DB (metadata) CDN
Lenta: Feed kesh (Redis) fan-out (post yozilganda obunachilarga)Kalit qarorlar:
- Rasmlar object storage'da (S3), DB'da emas — faqat metadata (URL, egasi).
- CDN — rasm foydalanuvchiga yaqin serverdan (tez).
- Bir necha o'lcham — yuklashda thumbnail/medium/full generatsiya (mos o'lchamni ber).
- Lenta — fan-out (oddiy foydalanuvchi push, mashhur — pull — gibrid).
- Hikoyalar (stories) — TTL bilan (24 soatdan keyin o'chadi — kesh).
Dars: katta media — storage + CDN; metadata — DB; lenta — kesh strategiyasi.
2. Uber — haydovchi-yo'lovchi moslash
Asosiy muammo: real vaqtda yaqin haydovchini topish, jonli joylashuv.
Haydovchi GPS har necha soniyada joylashuv yangilanadi (geo-indeks)
Buyurtma yaqin haydovchilarni qidir (geo-so'rov) moslash real-time kuzatuvKalit qarorlar:
- Geo-indekslash — yerni "kvadratlarga" bo'lish (geohash/H3) yaqinlik tez qidiruv.
- Real-time — WebSocket (joylashuv, holat).
- Moslash algoritmi — masofa + reyting + kutish vaqti.
- Surge pricing — talab/taklif nisbatiga qarab narx.
- Idempotentlik — to'lov bir marta (takror so'rov xavfsiz).
Dars: geolokatsiya — maxsus indeks; jonli — WebSocket; moslash — optimizatsiya.
3. Netflix — video uzatish
Asosiy muammo: ulkan video, turli tezlik/qurilma, global.
Video transkodlash (ko'p sifat/format) CDN (dunyo bo'ylab)
Pleer adaptiv bitrate (tarmoqqa qarab sifatni o'zgartiradi)Kalit qarorlar:
- Adaptiv streaming (HLS/DASH) — video bo'laklarga bo'linadi, tarmoq sekinlasa sifat tushadi (uzilmaydi).
- CDN — video foydalanuvchiga eng yaqin serverdan (Netflix o'z CDN'i — Open Connect).
- Oldindan transkodlash — har video ko'p sifat/formatda tayyorlanadi.
- Tavsiya — ko'rish tarixiga asoslangan (mashinaviy o'rganish).
- Mikroservis — har funksiya alohida (mashhur mikroservis namunasi).
Dars: video — transkod + CDN + adaptiv stream; mustaqil servislar.
4. WhatsApp — xabar almashish
Asosiy muammo: millionlab doimiy ulanish, ishonchli yetkazish, kam server.
Client WebSocket Server (ulanish boshqaruvi)
Offline xabar saqlanadi onlayn bo'lganda yetkaziladiKalit qarorlar:
- Doimiy ulanish — har telefon serverga ulangan (presence).
- Yetkazish kafolati — yuborildi/yetkazildi/o'qildi (ack).
- Offline navbat — qabul qiluvchi offline saqlanadi, keyin yetkaziladi.
- End-to-end shifrlash — server ham o'qiy olmaydi.
- Kam server, ko'p ulanish — samarali (Erlang bilan mashhur).
Dars: real-time + ishonchli yetkazish + offline navbat 16.3-bob.
5. Twitter/X — lenta (timeline)
Asosiy muammo: mashhur foydalanuvchi (millionlab obunachi) post yozsa — fan-out qiyin.
Oddiy foydalanuvchi: fan-out on write (post obunachilar keshiga)
Mashhur (celebrity): fan-out on read (lenta so'ralganda yig'iladi)
GIBRID ikkalasini birlashtiribKalit qarorlar:
- Gibrid fan-out — oddiyga push, mashhurga pull (celebrity muammosi).
- Lenta keshi (Redis) — har foydalanuvchi uchun tayyor lenta.
- Reyting — vaqt + qiziqish (faqat xronologik emas).
Dars: miqyosda "bir o'lcham hammaga mos kelmaydi" — gibrid yondashuv.
6. Stripe — to'lov
Asosiy muammo: pul — xato qabul qilinmaydi (idempotentlik, izchillik, xavfsizlik).
To'lov Idempotency-Key (takror oldini olish) bank webhook (natija)Kalit qarorlar:
- Idempotentlik —
Idempotency-Keybilan takror to'lov oldini olinadi (tarmoq retry). - Webhook — to'lov natijasi asinxron keladi (darrov emas — 13.6).
- Izchillik — har tranzaksiya audit, ACID.
- PCI muvofiqlik — karta ma'lumotini saqlamaslik (token bilan).
- Yarim holat — to'lov "pending" bo'lishi mumkin (holat mashinasi).
Dars: pul — idempotentlik + webhook + audit + xavfsizlik 16.1-bob.
7. GitHub — kod hosting
Asosiy muammo: millionlab repo, git operatsiyalari, katta fayl tarixi.
Git operatsiyalari maxsus serverlar; metadata (issue, PR) DB; qidiruv indeksKalit qarorlar:
- Git'ni miqyoslash — repo'lar serverlarga taqsimlangan (sharding).
- Metadata alohida — issue, PR, foydalanuvchi — DB'da.
- Qidiruv — kod qidiruvi alohida indeks (Elasticsearch uslubi).
- Webhook + CI — push'da hodisa (Actions).
Dars: maxsus ish (git) — maxsus tizim; metadata — umumiy DB.
Umumiy darslar (barcha case'lardan)
- Katta media object storage + CDN (DB'da emas).
- Real-time WebSocket + Redis pub/sub.
- O'qish-og'ir kesh (Redis) + read replica.
- Miqyos "bir o'lcham hammaga mos emas" (gibrid yechimlar).
- Pul/kritik idempotentlik + ACID + audit.
- Geo maxsus indeks (geohash).
- Asinxron navbat (og'ir/sekin ishni ajrat).
Mashq
Quyidagilarni o'zing tahlil qil (arxitektura, kalit qarorlar, darslar):
- YouTube (yuqorida Netflix bilan taqqosla)
- Airbnb (qidiruv + bron)
- Spotify (musiqa stream + playlist)
- Google Maps (xarita + marshrut)
- Slack (real-time + kanal + qidiruv)
Bog'liq: System Design deep-dive, 9-QISM · Bosh sahifa: README.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!