2011-09-05 12 views
5

मैं Node.js. में लंबे समय तक चलने वाले कार्य को संभालने का सबसे अच्छा तरीका समझने की कोशिश कर रहा हूं। स्पष्ट रूप से Node.js में एक लंबी चल रही प्रक्रिया करना अच्छा विचार नहीं है क्योंकि नोड की एकल थ्रेडेड प्रकृति।कभी भी लंबे समय तक चलने वाली प्रक्रिया के लिए RabbitMQ और Node.js का उपयोग करें?

मैं RabbitMQ का एक बड़ा प्रशंसक हूँ तो मैं बीच में खरगोश के साथ दो नोड सर्वर होने के बारे में सोच रहा था:

Node.js Web Server <--> RabbitMQ <--> Node.js Backend Worker 

निश्चित रूप से विचार कभी वेब सर्वर धीमा नहीं है। मैं आमतौर पर जावा के साथ बैकएंड सर्वर को प्रतिस्थापित करता हूं लेकिन मैं इसे सभी जेएस रखने की कोशिश कर रहा हूं।

मैं नोड प्रोग्रामर नहीं हूं इसलिए मुझे यकीन नहीं है कि यह एक अच्छा विचार है या यहां तक ​​कि संभव है? क्या किसी ने ऐसा कुछ करने की कोशिश की है?

+0

मैं बैकएंड वर्कर जावा बनाने के लिए समाप्त हुआ लेकिन अभी भी बीच में सामने और खरगोश में नोड है। –

उत्तर

0

यह निर्भर करता है कि "लंबी चल रही प्रक्रिया" से आपका क्या मतलब है - नोड को अवरोधित करने के लिए। जेएस, आपको एक साथ कई गणना करना होगा। I/O करना (मोटे तौर पर, कुछ ऐसा कॉल करना जो कॉलबैक तर्क लेता है) ईवेंट लूप पर पहुंच जाएगा।

तर्कसंगत कुछ चीजें हैं जो किसी ऐसी वेबसाइट पर करती हैं जिसमें ज्यादातर I/O शामिल नहीं होती है। उदाहरण के लिए, डेटाबेस से बात करना - I/O। फाइल सिस्टम से एक टेम्पलेट पढ़ना - I/O। (डेटाबेस से डेटा के साथ एक टेम्पलेट चला रहा है - ठीक है, नहीं I/O। शायद महंगा नहीं है।)

यदि आपके पास आपके चित्र में केवल दो नोड.जेएस प्रक्रियाएं हैं, तो प्रत्येक क्लाइंट की प्रतिक्रिया है अभी भी जब तक यह वैसे भी ले जाएगा (I/O समय प्लस गणना समय)। हालांकि, आप बेहतर थ्रूपुट प्राप्त कर सकते हैं, क्योंकि आप इनकमिंग अनुरोधों को क्रमबद्ध नहीं करेंगे। दूसरी तरफ अनुरोध रेबिटएमक्यू में बैक अप हो सकते हैं, जिससे आपका उच्च थ्रूपुट उच्च विलंबता में बदल जाता है।

आपके पास अनुरोधों को तेज़ी से प्राप्त करने के लिए, एक बैकएंड कार्यकर्ता चलाने/अधिक/चलाने का अवसर भी है। केवल वेब सर्वर में काम करना, लेकिन वेब सर्वर प्रक्रियाओं का एक गुच्छा चलाना और कहने वाले लोगों में लोड-बैलेंसिंग, nginx, का एक समान प्रभाव होगा।

+1

जब मेरा मतलब है कि लंबे समय तक चलना मेरा मतलब है बैच आयात या प्रसंस्करण करना जो कम से कम कुछ मिनटों में कुछ घंटों तक ले जाएगा। ये एक सामान्य उपयोगकर्ता अनुरोध द्वारा जरूरी प्रक्रियाओं को नहीं हटाया जाता है। मुझे लगता है कि जावा एक बेहतर विकल्प कारण है: मुझे यह वास्तव में अच्छी तरह से पता है :), हैडोप, और जब जावा जेवीएम बेकार करता है तो इस सामान पर अच्छा होता है। मुझे जगह पर RabbitMQ पसंद है क्योंकि जब मैं अधिक आरामदायक महसूस करता हूं तो मैं उसे वापस नोडजेएस पर स्विच कर सकता हूं। –

संबंधित मुद्दे

 संबंधित मुद्दे