
“बस इसे Redis में कैश कर दो” — आपने यह किसी कोड रिव्यू में, सिस्टम डिज़ाइन इंटरव्यू में, या Stack Overflow कमेंट में ज़रूर सुना होगा। यह अब लगभग एक रिफ्लेक्स बन चुका है। लेकिन Redis ही क्यों? एक अच्छे इंडेक्स वाले रेगुलर डेटाबेस से क्यों नहीं, या किसी और इन-मेमोरी स्टोर से? मैंने इसके इतिहास, आर्किटेक्चर, और विकल्पों के मौजूदा परिदृश्य में गहराई से देखा — और यह कहानी मीम से कहीं ज़्यादा दिलचस्प है।
आप एक API एंडपॉइंट /api/orders/1042 एक्सपोज़ करते हैं। वह इंटीजर किसी को भी — एक प्रतिस्पर्धी, एक हमलावर, एक जिज्ञासु उपयोगकर्ता — बिल्कुल बता देता है कि आपके पास कितने ऑर्डर हैं। नंबर को 1041 में बदलें, तो पिछला ऑर्डर मिल जाता है। इसे 1 में बदलें, तो पहला ऑर्डर मिल जाता है। कोई auth bypass की ज़रूरत नहीं। ID खुद ही जानकारी का रिसाव है।
यही एक पैराग्राफ में अनुक्रमिक ID की समस्या है। UUID इसे ठीक करने के लिए मौजूद है — और कुछ अन्य चीज़ें जो स्केल पर मायने रखती हैं।
Kafka बाहर से देखने पर बेहद सरल लगता है — आप किसी टॉपिक पर पब्लिश करते हैं, कोई उसे पढ़ता है। पर्दे के पीछे यह एक काफी जटिल वितरित प्रणाली है जहाँ कई घटकों को यह तय करना होता है कि कौन किसका मालिक है, इससे पहले कि एक भी बाइट डिलीवर हो। मैंने इसे सुलझाने में काफी समय लगाया, और अधिकांश लेख “पार्टिशन आपको समानांतरता देते हैं” पर रुक जाते हैं, बिना वास्तविक हैंडशेक समझाए। आइए गहराई में जाएँ।