साइट रिलायबिलिटी इंजीनियर इंटरव्यू सवाल

किसी write endpoint को retry के लिए सुरक्षित आप कैसे बनाते हैं?

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

क्लाइंट को एक idempotency key दें, पहली सफल write के नतीजे के साथ उसे स्टोर करें, और किसी भी दोहराव पर वही स्टोर किया गया नतीजा लौटाएं। डेटाबेस स्तर पर uniqueness लागू करें ताकि एक साथ आई नकलें दोहरी write करने के बजाय टकरा जाएं। key का दायरा हर ग्राहक तक सीमित रखें, उन्हें समझदार अवधि के बाद एक्सपायर करें, और जहां भी मौजूद हो, order id जैसी स्वाभाविक बिजनेस key को deduplication का आधार बनाएं।

इंटरव्यूअर यह क्यों पूछते हैं

idempotency के बिना हर retry पॉलिसी खतरनाक है, तो यह सवाल जांचता है कि आप घेरा पूरा कर सकते हैं या नहीं। इंटरव्यूअर डेटाबेस स्तर के uniqueness constraint की तलाश में रहते हैं, क्योंकि एप्लिकेशन स्तर की जांच concurrency में दौड़ हार जाती है। मजबूत जवाब बीच में चल रही रिक्वेस्ट का मामला भी संभालते हैं: जब पहली अभी चल ही रही हो तो दूसरी रिक्वेस्ट को क्या करना चाहिए।

अपना जवाब कैसे स्ट्रक्चर करें

  • idempotency key बताएं और यह भी कि वह आती कहां से है।
  • key, रिक्वेस्ट का fingerprint और response एक ही transaction में साथ स्टोर करें।
  • uniqueness डेटाबेस में लागू करें ताकि दौड़ खुलकर फेल हो।
  • बताएं कि पहली कॉल चलते हुए दोहराव आने पर क्या होता है।
  • key के दायरे और एक्सपायरी का जिक्र करें।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

क्लाइंट एक idempotency key बनाता है, आम तौर पर UUID, और उसे हेडर में भेजता है। सर्वर की तरफ मैं customer id और उस key पर एक unique constraint वाली टेबल रखता हूं, और key तथा response को उसी transaction में लिखता हूं जिसमें बिजनेस write होती है। फिर कोई दोहराव या तो unique constraint से टकराता है या स्टोर की गई row पा लेता है और मूल response दोबारा चला देता है, तो retries मुफ्त हो जाते हैं। दो बातें मायने रखती हैं। पहली, uniqueness डेटाबेस में ही रहनी चाहिए, क्योंकि अगर आप पहले select फिर insert करेंगे, तो एक साथ आए दो retry दोनों जांच पार कर जाएंगे। दूसरी, आपको तय करना होगा कि जब दूसरी रिक्वेस्ट तब आए जब पहली अभी चल रही हो तो क्या करना है। हम ब्लॉक करने के बजाय Retry-After के साथ 409 लौटाते थे, जिससे हमारा connection pool सेहतमंद रहा। मैं रिक्वेस्ट बॉडी का hash भी स्टोर करता हूं ताकि वही key किसी दूसरे कंटेंट के साथ इस्तेमाल हो तो वह चुपचाप गलत जवाब देने के बजाय अस्वीकार हो जाए।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • अगर वही key किसी दूसरे payload के साथ आ जाए तो आप क्या लौटाएंगे?
  • idempotency keys आप कितने समय तक रखेंगे, और क्यों?
  • जब write दो सर्विस पर फैली हो तो यह कैसे काम करता है?

साइट रिलायबिलिटी इंजीनियर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं