TGViewer
Mabrur | Dasturlash va AI Mabrur | Dasturlash va AI @mabrur_dev · 4.97K subscribers
Post #1520 2.55K
Bit.ly qanday ishlaydi? System Design intervyularidagi klassik savolini birga yechamiz

Biz har kuni bit.ly, tinyurl, cuttly kabi qisqa havolalarga duch kelamiz. Ular uzun va xunuk URL manzillarni chiroyli va qisqa ko‘rinishga keltiradi. Lekin kapot ostida bu oddiy vosita qanday ishlashini hech o‘ylab ko‘rganmisiz?

Bu nafaqat qiziqarli masala, balki bir qator kabi yirik kompaniyalarning System Design suhbatlarida eng ko‘p beriladigan savollardan biridir.

Keling, tasavvur qilamiz: bizga shunday servisni noldan qurish vazifasi topshirildi. Buni qanday amalga oshiramiz?

1-qadam: Talablar va Cheklovlarni aniqlash (Requirements)

Har qanday tizimni loyihalashdan avval, uning funksional va nofunksional talablarini aniqlab olishimiz kerak.

Funksional talablar:

Foydalanuvchi uzun URL manzilni kiritib, unga mos qisqa URL olishi kerak.

Foydalanuvchi qisqa URL manziliga kirganda, u avtomatik tarzda asl uzun manzilga yo‘naltirilishi (redirect) kerak.

Nofunksional talablar:

High Availability: Tizim doim o'chib qolmasligi, limit tugamasligi, buzilmasligi kerak.

Tezkor (Low Latency): Manzilga yo‘naltirish jarayoni deyarli bir zumda amalga oshishi kerak.

Scalibility: Tizim milliardlab havolalarni va ularga bo'ladigan milliardlab murojaatlarni bajara olishi kerak.

Noyoblik (Uniqueness): Har bir qisqa havola faqat bitta asl havolaga bog'langan bo'lishi shart.

2-qadam: API dizayni (API Endpoints)

Tizimimiz bilan tashqi dunyo qanday "gaplashishini" belgilab olamiz. Buning uchun ikkita asosiy endpoint kerak bo'ladi:

1. Havolani qisqartirish uchun:
POST /api/v1/shorten


So'rov (Request Body):

{
"original_url": "https://uz.wikipedia.org/wiki/Amir_Temur_maqbarasi"
}


Muvaffaqiyatli Javob (201 Created):

{
"short_url": "https://short.uz/GorAmir"
}


2. Qisqa havoladan asl manzilga yo'naltirish uchun:
GET /{short_code}


Misol: Foydalanuvchi https://short.uz/GorAmir manziliga kiradi. Bu yerda GorAmir — bu bizning short_code.

Javob: Tizim 301 Moved Permanently HTTP status kodi bilan javob qaytaradi. Bu javobning Location header qismida asl uzun URL (https://uz.wikipedia.org/wiki/Amir_Temur_maqbarasi) bo'ladi. Brauzer bu javobni olgach, foydalanuvchini avtomatik tarzda o'sha manzilga yo'naltiradi.

3-qadam: Ma'lumotlar bazasi sxemasi (Database Schema)

Endi ma'lumotlarni qanday saqlashni o'ylab ko'ramiz. Bizga oddiy, lekin samarali jadval kerak. Keling, uni urls deb nomlaymiz. Unda id, original_url, short_code, created_at kabi fieldlar bo'ladi.

4-qadam: Qisqa kodni generatsiya qilish (short_code Generation)

Bu — tizimning eng qiziqarli va muhim qismi. short_code qanday yaratiladi?

Yomon yondashuv: Hashing (masalan, MD5)
Uzun URL'ni MD5 orqali hashlab, natijaning birinchi 6-7 belgisini olish mumkin.

Muammo: To'qnashuv (Collision). Ikki xil uzun URL bir xil qisqa kodga ega bo'lib qolishi ehtimoli bor. Bu esa mutlaqo yaroqsiz yechim.

Yaxshi yondashuv: Base62 Encoding
Bu ancha universal standart hisoblanadi va quyidagicha ishlaydi:

Yangi URL bazaga saqlanganda, unga unique, avtomatik o'suvchi id beriladi (masalan, 1001). Bu raqam 10 lik sanoq tizimida.

Biz bu id raqamini Base62 sanoq tizimiga o'tkazamiz. Nega aynan Base62? Chunki u URL uchun xavfsiz bo'lgan 62 ta belgidan foydalanadi: [0-9], [a-z], [A-Z].

Bu usul collisionlarni oldini 100% oladi, chunki har bir id noyob.

Misol:
id = 1 -> 1 (Base62)
id = 1000 -> gE (Base62)
id = 99999999 -> 15FTGf (Base62)

Ko'rib turganingizdek, hatto 100 millioninchi havola uchun ham kod juda qisqa (6 belgi) chiqadi.

Davomi pastda...
  • 👍 8
  • ❤ 1
  • 👎 1
  • 😁 1
More from @mabrur_dev
  1. Oct 9, 2026Elevenlabs V4 - Professional Voice Cloning
  2. Oct 5, 2026Claude bilan o'tirib ishim uchun kerakli xitoycha modellar bo'yicha research qilgandim, sh…
  3. Oct 4, 2026Nomi g'alati eshitilishi mumkin, lekin jev ustiga yaxshi tool yasashibdi. Ayniqsa minglab…
  4. Oct 4, 2026Efirda tanaffus ) Ko'chadagi havoga shu ketadiyu, nima deysilar 😅
  5. Oct 3, 2026Do'stlarimiz yangi platformaga asos solishibdi. Platformada siz SAT imtihonlariga tayyorla…
  6. Oct 1, 2026Men anchadan beri birga ishlaydigan kompaniyam founderi YouTube’da juda yaxshi podcastlar…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →