पाठ 26 / 32

URL शॉर्टनर डिज़ाइन करें

लंबे URL को छोटी की में बदलने वाली रीड-हैवी सेवा।

आवश्यकताएँ

किसी URL के लिए छोटा लिंक बनाएँ; विज़िट पर रीडायरेक्ट; लिंक नहीं बदलते; वैकल्पिक एक्सपायरी। मानें 100M नए लिंक/माह और 100:1 रीड:राइट।

की जनरेशन

एक ग्लोबल काउंटर लें, उसे base62 एन्कोड करें → 7 अक्षर ~3.5 ट्रिलियन लिंक कवर करते हैं। या URL को हैश करें और पहले 7 अक्षर लें, टक्कर को रिट्राई से संभालें।

डेटा और प्रवाह

एक टेबल, साथ ही रीडायरेक्ट पाथ के सामने एक कैश।

links(key PK, long_url, created_at, expires_at)

GET /{key}:
  cache.get(key) or db.get(key)
  -> 301 redirect to long_url

Output:

Reads served mostly from cache; DB sharded by key

301 बनाम 302

301 (स्थायी) ब्राउज़र को रीडायरेक्ट कैश करने देता है — कम हिट, पर क्लिक एनालिटिक्स खो जाते हैं। हर विज़िट गिनने के लिए 302 उपयोग करें।