2013-06-03 17 views
6

मैं नोड के क्लस्टर एपीआई और मोंगोस का उपयोग करके नोड के लिए एक कार्यकर्ता कतार लिखना शुरू करने की प्रक्रिया में हूं।नोडजेस के लिए कार्यकर्ता कतार?

मैंने देखा कि बहुत सारे libs मौजूद हैं जो पहले से ही ऐसा करते हैं लेकिन रेडिस और फोर्किंग का उपयोग करते हैं। क्लस्टर एपीआई का उपयोग कर कांटा बनाम का कोई अच्छा कारण है?

संपादित करें और अब मुझे यह भी मिल रहा है: https://github.com/xk/node-threads-a-gogo - बहुत सारे विकल्प!

मैं मिश्रण में रेडिस नहीं जोड़ूंगा क्योंकि मैं पहले से ही मोंगो का उपयोग करता हूं। इसके अलावा, मेरी आवश्यकताओं बहुत ढीली हैं, मुझे दृढ़ता चाहिए लेकिन पहले संस्करण के लिए इसके बिना जा सकता है।

भाग दो भाग: सबसे स्थिर/प्रयुक्त नोडजे कार्यकर्ता कतार आज क्या है?

+1

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

+0

स्थिर/प्रयुक्त कार्यकर्ता कतार: शून्य एमक्यू –

+0

ज़ीरोमक के लिए कोई नोडज बाइंडिंग नहीं है - मैं नोड समर्थन के साथ एक lib की तलाश कर रहा हूं जिसे आदर्श रूप से एक अलग सर्वर की आवश्यकता नहीं है। कुछ हल्का वजन – mkoryak

उत्तर

5

इस पर अनुवर्ती होना चाहता था। मेरा समाधान आपके स्वयं के क्लस्टर इत्यादि को रोल करने के लिए समाप्त हुआ जहां मेरे कुछ क्लस्टर श्रमिक नौकरी कार्यकर्ता समर्पित हैं (यानी उनके पास सिर्फ नौकरियों पर काम करने के लिए कोड है)।

मैं नौकरी शेड्यूलिंग के लिए agenda का उपयोग करता हूं।

क्रॉन प्रकार की नौकरियां क्लस्टर मास्टर द्वारा निर्धारित की जाती हैं। बाकी नौकरियां गैर-कार्यकर्ता क्लस्टर में बनाई जाती हैं क्योंकि उनकी आवश्यकता होती है। (सत्यापन ईमेल इत्यादि)

इससे पहले कि मैं kue का उपयोग कर रहा था लेकिन इसे छोड़ दिया क्योंकि मेरा बाकी ऐप मोंगोडब का उपयोग करता है और मुझे नौकरी शेड्यूलिंग के लिए रेडिस का उपयोग करना पसंद नहीं आया।

6

क्या आपने https://github.com/rvagg/node-worker-farm को आजमाया है? यह बहुत हल्का वजन है और इसके लिए एक अलग सर्वर की आवश्यकता नहीं है।

+1

उत्कृष्ट। धन्यवाद। –

4

मैं व्यक्तिगत रूप से क्लस्टर-मास्टर के आंशिक हूं।

https://github.com/isaacs/cluster-master

कारण मैं क्लस्टर मास्टर की तरह है क्योंकि यह बहुत कम करता है के अलावा अपनी प्रक्रिया forking के लिए तर्क में जोड़ सकते हैं और आप आप चला रहे हैं प्रक्रिया की संख्या का प्रबंधन करने की क्षमता है, और एक छोटा सा दे रहा है लॉगिंग/बूट करने के लिए वसूली! मुझे लगता है कि अत्यधिक फूला हुआ प्रक्रिया प्रबंधन पुस्तकालय अस्थिर होते हैं, और कभी-कभी धीमी चीजें भी धीमी होती हैं।

इस पुस्तकालय यदि निम्न आप के लिए अच्छा होगा सत्य हैं:

  • आपका मॉड्यूल
  • आप ट्रिगर
  • घटनाओं की घटनाओं के विभिन्न प्रकार की एक बड़ी राशि की जरूरत नहीं है बड़े पैमाने पर अतुल्यकालिक है उस आग में काम करने के लिए बहुत कम मात्रा है, लेकिन आपके पास कई समान घटनाएं हैं (वेब ​​सर्वर जैसी चीजें)

उपर्युक्त सूची का कारण, यही कारण है कि धागे-एजी विपरीत कारणों से, अहंकार आपके लिए अच्छा हो सकता है। यदि आपके कोड में कुछ स्पॉट हैं, जहां आपके इवेंट लूप में बहुत सारे काम हैं, तो थ्रेड-ए-गोगो जैसे कुछ विशेष रूप से इस काम के लिए "थ्रेड" लॉन्च करते हैं, क्योंकि आप निर्धारित नहीं कर रहे हैं समय से पहले कितने श्रमिकों को उछालना है, बल्कि जरूरत पड़ने पर उन्हें काम करने के लिए प्रेरित करना। नोट: यदि आप बहुत सी प्रक्रियाओं को लॉन्च करना शुरू करते हैं, तो चीजें भी वास्तव में खराब हो सकती हैं, लेकिन मैं digress।

संक्षेप में, यदि आपका मॉड्यूल काफी हद तक असीमित है, तो आप वास्तव में एक कार्यकर्ता पूल चाहते हैं। डाउन टाइम को कम करने के लिए जब आपकी प्रक्रिया घटनाओं के लिए नहीं सुन रही है, और प्रोसेसर की मात्रा को अधिकतम करने के लिए आप इसका उपयोग कर सकते हैं। जब तक आपके पास बहुत व्यस्त सिंक्रोनस कॉल न हो, तब तक एक नोड इवेंट लूप को प्रोसेसर के एक भी कोर का लाभ उठाने में परेशानी होगी। इस परिस्थिति में, आप क्लस्टर-मास्टर के साथ सबसे अच्छे हैं। मैं जो सलाह देता हूं वह थोड़ा बेंचमार्किंग कर रहा है, और देखें कि आपका प्रोग्राम "सबसे खराब केस परिदृश्य" के तहत कितना कोर उपयोग कर सकता है। मान लें कि यह एक कोर का 33% है। यदि आपके पास क्वाड कोर मशीन है, तो आप 12 कर्मचारियों को लॉन्च करने के लिए क्लस्टर मास्टर को बताएं।

आशा है कि इससे मदद मिलेगी!

+1

मेरी वर्तमान अनूठी स्थिति के लिए बहुत ही बुनियादी और सही है, लेकिन भविष्य के खोजकर्ताओं के लिए ... इसे छोड़ दिया गया है। –