पाठ 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 उपयोग करें।