2010-10-16 13 views
5

पर अद्यतनों को तैनात करना यह एक मूल प्रश्न हो सकता है, लेकिन मैं वर्तमान में node.js कोड चलाने के लिए अद्यतनों को प्रभावी रूप से तैनात करने के बारे में कैसे जा सकता हूं?उत्पादन node.js कोड

मैं एक PHP, जावास्क्रिप्ट (क्लाइंट-साइड) पृष्ठभूमि से आ रहा हूं, जहां मैं फ़ाइलों को ओवरराइट कर सकता हूं जब उन्हें अद्यतन करने की आवश्यकता होती है और परिवर्तन तुरंत साइट पर उपलब्ध होते हैं।

लेकिन node.js में मुझे मौजूदा फ़ाइलों को ओवरराइट करना होगा, फिर बंद करें और एप्लिकेशन को पुन: लॉन्च करना होगा। क्या मुझे इस में संभावित डाउनटाइम से चिंतित होना चाहिए? मेरे लिए यह PHP (स्क्रिप्टिंग) तरीके से अधिक जोखिम भरा दृष्टिकोण की तरह लगता है। जब तक मेरे पास एक सर्वर क्लस्टर नहीं है, जहां मैं अपडेट के लिए एक समय में एक सर्वर ले सकता हूं।

इसके लिए किस तरह की रणनीतियों उपलब्ध हैं?

उत्तर

2

मेरे मामले में यह काफी है:

svn up; monit restart node

इस नोड सर्वर लंबे मतदान ग्राहकों के साथ एक धूमकेतु सर्वर के रूप में काम कर रहा है, ताकि ग्राहकों को वैसे ही जैसे वे सामान्य रूप से कनेक्ट करें। नोड सर्वर की पहली चीज़ डेटाबेस से वर्तमान स्थिति की जानकारी लेती है, इसलिए सब कुछ सुचारू रूप से चल रहा है।

मुझे नहीं लगता कि यह PHP फ़ाइलों का एक समूह अद्यतन करने के लिए svn up करने से वास्तव में कोई जोखिम भरा है। अगर कुछ भी थोड़ा सुरक्षित है। जब आप एक बड़ी पीएचपी परियोजना अपडेट कर रहे हैं, तो एक मौका है (यदि यह एक उच्च ट्रैफिक साइट है तो यह मूल रूप से 100% मौका है) कि आप अभी भी अपडेट होने पर वेब सर्वर पर अनुरोध प्राप्त कर सकते हैं। इसका मतलब है कि आप एक ही अनुरोध में अद्यतन और पुराने कोड चला रहे होंगे। कम से कम नोड दृष्टिकोण के साथ, आप सब कुछ अपडेट कर सकते हैं और नोड सर्वर को पुनरारंभ कर सकते हैं और जानते हैं कि आपका सभी कोड अद्यतित है।

2

मैं डाउनटाइम के बारे में बहुत ज्यादा चिंता नहीं करता, आपको यह इतना छोटा रखने में सक्षम होना चाहिए कि कोई भी नोटिस नहीं करेगा (प्रक्रिया को मार दें और इसे एक बैश स्क्रिप्ट या फिर कुछ लॉन्च करें यदि आप रखना चाहते हैं यह एक सेकंड के एक अंश के लिए)।

अधिक चिंता का विषय यह है कि कई नोड अनुप्रयोग स्मृति में बहुत सारी राज्य जानकारी रखते हैं जिसे आप इसे पुनरारंभ करते समय खोने जा रहे हैं। उदाहरण के लिए यदि आप चैट एप्लिकेशन चला रहे थे तो शायद यह याद न हो कि उपयोगकर्ता किससे बात कर रहे थे या वे कौन से चैनल/कमरे में थे। इसके साथ काम करना एक डिजाइन समस्या है, और बहुत ही विशिष्ट विशिष्ट है।

+0

यूप का उपयोग कर सर्वर। यही कारण है कि स्मृति के बजाए लगातार डेटाबेस में उदाहरण सत्र डेटा को स्टोर करना समझ में आता है। –

1

क्लाउड होस्टिंग प्रदाताओं में से कुछ नोड.जेएस (जैसे नोडजित्सु या विंडोज एज़ूर) अलग-अलग निर्देशिकाओं पर डिस्क पर आपकी साइट के दोनों संस्करणों को रखें और नए संस्करण को पूरी तरह से एक बार संस्करण से नए संस्करण में रीडायरेक्ट करें को तैनात किया।

यह आमतौर पर एक सेवा (पाएएस) प्रदाताओं के रूप में प्लेटफ़ॉर्म की अंतर्निहित सुविधा है। हालांकि, अगर आप अपने सर्वर का प्रबंधन कर रहे हैं तो आपको एक संस्करण को अगले संस्करण में तैनात करने के बाद यातायात को अगले संस्करण में जाने की अनुमति देने के लिए कुछ बनाना होगा।

इस दृष्टिकोण का एक लाभ यह है कि रोलबैक आसान है क्योंकि पिछले संस्करण साइट पर बरकरार रहता है।

1

यदि आपका node.js एप्लिकेशन 'बीट को छोड़ नहीं सकता है' जिसका अर्थ है कि यह आने वाले अनुरोधों के निरंतर बमबारी के अधीन है, तो आप बस त्वरित पुनरारंभ (डाउनमोन के साथ) के डाउनटाइम को बर्दाश्त नहीं कर सकते हैं। मुझे लगता है कि कुछ मामलों में आप बस अपने node.js ऐप्स के एक निर्बाध पुनरारंभ करना चाहते हैं। ऐसा करने के लिए मैं शून्य: https://github.com/superjoe30/naught अपने नोड के लिए शून्य डाउनटाइम परिनियोजन का उपयोग करता हूं।जेएस सर्वर बिल्टिन क्लस्टर एपीआई

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