2011-06-08 13 views
7

के लिए MapReduce नौकरियों को शेड्यूल करना यह एक कार्यान्वयन प्रश्न है, लेकिन क्या मोंगोडीबी के लिए मैप्रिडस जैसे कार्यों को शेड्यूल करने के लिए क्रॉन जैसे कुछ सरल उपयोग करने की कोई कमी है? कहें कि हर घंटे कुछ निष्पादित करने की ज़रूरत है, ऐसा करने के लिए यह एक उपयुक्त तरीका है ... लेकिन मुझे लगता है कि मैं बस रेस्क और अन्य जैसे सभी लोकप्रिय नौकरी क्यूइंग सिस्टम की वजह से पूछ रहा हूं।MongoDB

मुझे लगता है कि मेरा प्रश्न अधिक पसंद है, क्या क्रॉन ठोस और विश्वसनीय पर्याप्त समाधान प्रदान करता है? विचार?

उत्तर

8

क्रॉन दशकों से उपयोग किया गया है और यह काफी विश्वसनीय और ठोस है; यदि आपका क्रॉन विश्वसनीय नहीं है तो मैं सुझाव दूंगा कि आपके ओएस विक्रेता के साथ एक कठोर चर्चा क्रम में है। इसके अलावा, मोंगोडीबी दस्तावेज उदाहरण के लिए क्रॉन नौकरियों (Google "साइट: mongodb.org cron" के बारे में बात करता है) इसलिए, संभवतः, मोंगोडीबी के साथ क्रॉन नौकरियों की अपेक्षा की जानी चाहिए।

यह कहा गया है कि यदि आपके पास पहले से ही किसी अन्य शेड्यूलिंग सिस्टम के लिए आधारभूत संरचना का एक समूह है, तो संभवतः मोंगोडीबी के लिए क्रॉन का उपयोग करने और अन्य कार्यों के लिए कुछ और करने का कोई कारण नहीं है।

किसी भी मामले में, तो आप शायद एक सरल पीआईडी ​​फ़ाइल लॉकिंग सिस्टम पर परत अगर आपके क्रॉन नौकरियों काफी लंबे समय लग सकता है ओवरलैप चाहता हूँ और आप केवल एक एक समय में चल चाहते हैं:

  • क्रॉन नौकरी शुरू होने पर पीआईडी ​​फाइल की तलाश होती है।
  • यदि यह फ़ाइल पाता है, तो यह फ़ाइल के पुराने नौकरी के पीआईडी ​​को पढ़ता है और जांचता है कि यह अभी भी चल रहा है या नहीं।
    • यदि पुराना व्यक्ति चल रहा है तो नया व्यक्ति शिकायत करेगा और बाहर निकल जाएगा।
    • यदि पुराना कोई नहीं चल रहा है, तो नया जारी रहेगा।
  • जब नया काम तय करता है कि यह शुरू करना ठीक है, तो यह पीआईडी ​​फ़ाइल को पीआईडी ​​फाइल में लिखता है।
  • जब नया काम समाप्त हो जाता है, तो यह बाहर निकलने से पहले पीआईडी ​​फ़ाइल को हटा देता है (या atexit हैंडलर या जो भी आपके पर्यावरण का समर्थन करता है) का उपयोग कर।