आप एक ही distributed transaction का ख्याल छोड़ देते हैं और saga इस्तेमाल करते हैं: local transactions की एक श्रृंखला, जहां हर कदम एक event publish करता है जो अगला कदम चलाता है, और हर कदम के पास उसे उलटने के लिए एक compensating action होता है। consistency eventual हो जाती है, इसलिए असली डिज़ाइन काम यह तय करना है कि क्या compensate करना है, क्या retry करना है और क्या किसी इंसान तक पहुंचाना है। flow को साफ साफ मॉडल करें, या तो events के ज़रिए choreographed या किसी orchestrator से चलाया हुआ।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर परख रहे हैं कि आप two phase commit की तरफ लपकते हैं या समझते हैं कि services के बीच इसे लगभग कोई क्यों नहीं चलाता। वे compensating actions, idempotency, rollback और refund के अर्थ का फर्क, और यह सुनना चाहते हैं कि आप state machine को दिखने लायक कैसे रखते हैं। यह भी टटोलता है कि आप service boundaries पर ही सवाल उठाएंगे या नहीं, क्योंकि इनमें से कुछ कदम शायद एक साथ ही होने चाहिए।
अपना जवाब कैसे स्ट्रक्चर करें
- समझाएं कि distributed transaction जवाब क्यों नहीं है।
- saga को परिभाषित करें: local transactions और compensations।
- choreography और orchestration की तुलना करें और एक चुनें।
- उलझे हिस्से बताएं: partial failure, retries, इंसान तक escalation।
उदाहरण जवाब
तीन services और तीन डेटाबेस पर two phase commit का मतलब है network के आर पार locks पकड़े रखना और एक coordinator जो मर जाए तो सब कुछ ठप कर सकता है, इसलिए मैं वह नहीं करूंगा। इसके बजाय flow एक saga बन जाता है। हर service अपना local transaction करती है और एक event भेजती है, और हर कदम की एक तय compensation होती है: अगर shipping allocate नहीं कर पाया, तो हम inventory reservation छोड़ देते हैं और payment refund या void कर देते हैं। अहम बात यह है कि compensation एक बिज़नेस कार्रवाई है, rollback नहीं; refund एक दिखने वाला रिकॉर्ड छोड़ता है और यही सही भी है। जिस भी चीज़ में तीन से ज़्यादा कदम हों, वहां मैं शुद्ध choreography की जगह orchestrator लेता हूं, क्योंकि choreography में असली flow कहीं लिखा नहीं होता और कोई नहीं बता पाता कि कोई order कहां अटका है। orchestrator मुझे एक state machine, हर कदम पर timeouts और query करने लायक status देता है। हर कदम idempotent है और backoff के साथ retry होता है, और जिसकी retries खत्म हो जाएं वह order id के साथ एक operations queue में चला जाता है, क्योंकि कुछ नाकामियों के लिए सचमुच इंसान चाहिए।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- जब compensating action खुद ही नाकाम हो जाए तो आप क्या करते हैं?
- चल रहे किसी order की स्थिति आप कस्टमर को कैसे दिखाएंगे?
- दो services के बीच saga चलाने की जगह आप उन्हें कब मिला देंगे?
बैकएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें