इस भरोसे पर मत रहिए कि हर instance अपना local cron चलाएगा। एक leader lock इस्तेमाल करें, जैसे lease और time to live के साथ ली गई कोई row या key, ताकि सिर्फ पकड़ने वाला ही job चलाए; या scheduling को प्लेटफॉर्म स्तर के cron को सौंप दें जो एक job queue में डाल दे और कोई worker उठा ले। जो भी करें, job को idempotent और दिखने लायक रखें, क्योंकि lease बीच चलते चलते expire हो सकता है और overlap करा सकता है।
इंटरव्यूअर यह क्यों पूछते हैं
यह डिस्ट्रिब्यूटेड सिस्टम्स की छोटी सी समस्या है जिसमें बारीक नाकामियां बहुत हैं। इंटरव्यूअर देखना चाहते हैं कि आप यह नहीं मान लेते कि एक जैसे instances पर in process schedulers एक ही बार चलेंगे, आप जानते हैं कि crash झेलने के लिए locks को expiry चाहिए, और idempotency ही असली सुरक्षा जाल बनी रहती है। जो job चुपचाप चलना बंद कर दे, उसकी निगरानी वह बारीकी है जिसे ज़्यादातर कैंडिडेट छोड़ देते हैं।
अपना जवाब कैसे स्ट्रक्चर करें
- समस्या बताएं: एक जैसे instances में हर एक अपना timer चलाता है।
- दो चलने लायक तरीके दें, lock वाला और प्लेटफॉर्म से scheduled।
- lease expiry, overlap और crash से उबरने पर बात करें।
- उस job के लिए निगरानी जोड़ें जो चली ही नहीं।
उदाहरण जवाब
भोला तरीका छह बार चलता है, और जिस तरीके में एक खास instance को चुन लिया जाता है वह उस दिन काम करना बंद कर देता है जिस दिन वही instance बीमार हो। इसलिए मैं या तो lock इस्तेमाल करता हूं या scheduling को एप्लिकेशन से पूरी तरह बाहर कर देता हूं। lock वाले तरीके में हर instance तय समय पर lease लेने की कोशिश करता है, आमतौर पर jobs टेबल पर expiry के साथ एक insert या conditional update, और सिर्फ जीतने वाला चलता है, काम करते हुए lease renew करता रहता है। बारीकी यह है कि लंबे run के दौरान lease expire हो सकता है, और तब दूसरा instance शुरू हो जाता है, इसलिए job को दो बार चलने लायक सुरक्षित रहना ही होगा। किसी भी पैमाने पर मेरी पसंद दूसरा तरीका है: प्लेटफॉर्म स्तर की scheduling जो एक ही message queue में डाले, और आम workers उसे उठा लें। इससे retries, दृश्यता और इतिहास मुफ्त मिल जाते हैं, और एप्लिकेशन कोड बस एक handler रह जाता है। तरीका कोई भी हो, मैं शुरू और खत्म का समय दर्ज करता हूं और alert लगाता हूं कि job अपनी अपेक्षित खिड़की में पूरी नहीं हुई, क्योंकि चुपचाप चलना बंद कर देने वाली job वह नाकामी है जो लोगों को हफ्तों बाद पता चलती है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- अगर job दो runs के बीच के अंतराल से ज़्यादा समय ले ले तो क्या होगा?
- रात की report job को आप idempotent कैसे बनाएंगे?
- जो job हज़ारों tenants में हर tenant के लिए एक बार चलनी हो, उसे कैसे संभालेंगे?
बैकएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें