2010-09-16 4 views
5

मुझे यह जानने में दिलचस्पी है कि लोग अपने लिस्प वेबपैप परिनियोजन और अपडेट (विशेष रूप से अपडेट) कैसे उत्पादन करते हैं।प्रतिक्रिया वांछित: उत्पादन के लिए गैर-विघटनकारी तैनाती रणनीतियों Lisp webapps

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

मुझे पता है कि लंबे समय तक चलने वाली लिस्प प्रक्रिया को एसएसएच सुरंग के माध्यम से स्वैंक के माध्यम से जोड़ा जा रहा है और जगह में संशोधित किया गया है, यह एक लोकप्रिय विचार है जो चारों ओर खटखटाया गया है, लेकिन मैंने नहीं पी लिया है कि ज्यादातर इस मुद्दे के कारण कुलाद एक राज्यव्यापी प्रक्रिया को अद्यतन करने के लिए (जो कुछ गलत होने पर परेशानी के लिए पूछना प्रतीत होता है - जैसे स्मृति में वर्तमान स्थिति और नई ऑब्जेक्ट परिभाषाओं के बीच अप्रत्याशित प्रतिबाधा विसंगतियां जो जल्द ही स्मृति में होंगी)।

यह देखते हुए कि आप Hunchentoot (या यहां अपना पसंदीदा लिस्प एप सर्वर डालें) का उपयोग करके लगभग स्टेटलेस (या पूरी तरह से) वेबपैप्स बना सकते हैं, ऐसा लगता है कि कैपिस्ट्रानो जैसे कुछ का उपयोग लिस्प कोड को गैर-विघटनकारी अपडेट के लिए भी किया जा सकता है यदि भी लिस्प प्रक्रिया (एस) अपने अपस्ट्रीम चैनल में nginx के पीछे छिपी हुई है और यदि आप सही ढंग से कोरियोग्राफ प्रक्रियाओं को कम करने के लिए कोरियोग्राफ कर सकते हैं और उन्हें कोड के अपडेट के बाद बैक अप ले सकते हैं, उदाहरण के लिए, कम से कम एक hunchentoot प्रक्रिया को छोड़कर उन्हें वापस ले जाएं किसी भी क्षण में क्लस्टर में (सीजीआई या mod_lisp का उपयोग किया जा सकता है, लेकिन मुझे उस दृष्टिकोण में विशेष रूप से दिलचस्पी नहीं है - हालांकि यदि आप वास्तव में उस दृष्टिकोण को पसंद करते हैं, तो कृपया कम से कम कुछ इसके बारे में कुछ कहें, मैं सीखना चाहता हूं)। उदाहरण के लिए, पैसेंजर का उपयोग करना (जो सेब से संतरे की तुलना कर रहा है क्योंकि यह मांग पर प्रक्रियाओं को बढ़ाता है), आप tmp/restart.txt को स्पर्श करते हैं और ऐप सर्वर ताज़ा अपडेट किए गए कोड के साथ इस बार पुनरारंभ करता है - उपयोगकर्ता परिप्रेक्ष्य में कोई रुकावट नहीं।

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

धन्यवाद

+1

यह प्रश्न प्रोग्रामर पर बेहतर काम कर सकता है? – blueberryfields

+0

@blue: शायद नहीं। यह बहुत ही स्थानीयकृत है, और वास्तव में प्रति व्यक्तिपरक प्रश्न नहीं है। –

उत्तर

1

आप पूरा कर सकते हैं गैर विघटनकारी (शून्य डाउनटाइम) HAProxy की तरह एक बुद्धिमान सामने के अंत/लोड संतुलन कि रोटेशन से बाहर अनुप्रयोग सर्वर खींचती के लिए Capistrano स्क्रिप्ट लिख कर की तैनाती, उन्हें नव तैनात कोड के साथ पुन: प्रारंभ होता , और उन्हें मिश्रण में वापस रखता है।

उत्पादन में लाइव रोटेशन से बाहर होने पर अपने ऐप्स सर्वर को बढ़ते हुए आप चिकनी तैनाती प्राप्त कर सकते हैं।

यह विशिष्ट स्थिति के साथ लगातार ऐप सर्वर लूप रखने पर स्पर्श नहीं करता है, जो आपके द्वारा उल्लेखित कारणों के लिए डरावना लगता है। डीईजीएलिंग और ट्विकिंग के लिए आरईपीएल शांत हैं, लेकिन डिस्क पर कोड चलाने के लिए आपकी सहजता अच्छी तरह से स्थापित होती है।

+0

विनफील्ड, विचारशील इनपुट के लिए धन्यवाद। की सराहना की। – m7d

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