2016-03-23 5 views
34

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

यह कहा जा रहा है कि, मुझे यह भी पता है कि नेटवर्क पर अन्य सभी नोड्स के अपडेट वितरित करने के लिए एक छिपे हुए नोड का उपयोग करना संभव है। बेशक, ऐसा लगता है कि परेशानी की मांग की तरह लगता है, लेकिन ...

मेरा प्रश्न निम्न होगा: क्या किसी ने एरलांग/एलिक्सीर के लिए डॉकर-आधारित आधारभूत संरचना स्थापित करने के लिए उचित सफलता के साथ प्रयास किया है और हासिल किया है हॉट कोड स्वैपिंग? यदि हां, तो क्या करें, क्या करें और चेतावनी क्या हैं?

+0

मेरी टिप्पणी के बावजूद मेरा मानना ​​है कि इसका अभी तक उत्तर नहीं दिया गया है। मेरा मानना ​​है कि डॉकर के भीतर एचसीएस का उपयोग करने की विभिन्न कार्यान्वयन रणनीतियों के रूप में और अधिक लिखा जा सकता है। मेरा अनुमान है कि डॉकर या इससे कोई फर्क नहीं पड़ता जब तक आप HEAD के साथ गठबंधन प्रोड को बनाए रखते हैं, इससे कोई फर्क नहीं पड़ता कि डॉकर या एरलांग के माध्यम से कोई नया कंटेनर धक्का दिया जाता है। लेकिन चीजों को सिंक रखें! – Aki

+1

डॉकर एर्लांग के लिए विशेष रूप से अच्छा फिट नहीं है - आज भी कई छोटी दुकानों को तैनात करने का यही एकमात्र तरीका है। अधिकांश लोग डॉकर (हल्के समानांतरता, निष्पादन पर्यावरण स्वच्छता, "नेटवर्क को अमूर्तता", प्रक्रिया अलगाव, स्मृति सुरक्षा इत्यादि) के साथ हल करने का प्रयास करते हैं। एरलैंग पहले से ही एक पूर्ण फैशन में संबोधित समस्याएं हैं। हॉट कोड अपग्रेड के लिए रनटाइम के लिए गति और स्टोरेज/कोड लोडिंग वातावरण में डेटा प्रकारों की उच्च डिग्री नियंत्रण और ज्ञान की आवश्यकता होती है। डॉकर सामान्य मामले में दूसरी आवश्यकता को रोकता है। – zxq9

+0

@ zxq9: यह मुझे डॉकर के बाहर फीनिक्स/एलिक्सीर ऐप्स चलाने में अधिक आत्मविश्वास देता है लेकिन क्या एचसीएस वास्तव में सर्कलसीआई या ट्रैविससीआई का उपयोग कर देवोपस पर्यावरण में समझ में आता है? मूल रूप से, एरलांग एचसीएस डॉकर और सीआई उपकरण के लिए ऑर्थोगोनल नहीं है? यह एचसीएस फीचर के पुनः मूल्यांकन के लिए कहता है, हम जानते हैं कि पीएएस अक्सर नोड्स को एक दूसरे के साथ बातचीत करने की इजाजत नहीं देता है जिस तरह एचसीएस को अच्छी तरह से काम करने की ज़रूरत होती है। यह एक पूरी नई पोस्ट होनी चाहिए: क्या वेब ऐप्स को डॉकर और सीआई के पक्ष में एचसीएस को बलिदान देना चाहिए? – Aki

उत्तर

22

कहानी

एक प्रणाली मोबाइल फ़ोन कॉल या मोबाइल डेटा का उपयोग (कि क्या Erlang के लिए बनाया गया था है) को संभालने के लिए कल्पना कीजिए। गेटवे सर्वर हैं जो कॉल की अवधि के लिए उपयोगकर्ता सत्र बनाए रखते हैं, या डेटा एक्सेस सत्र (मैं इसे आगे जाने वाला सत्र कहूंगा)। जब तक सत्र सक्रिय होता है तब तक सर्वर के सत्र में इन-मेमोरी का प्रतिनिधित्व होता है (उपयोगकर्ता कनेक्ट होता है)।

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

आपका प्रश्न

अंत के इस संदर्भ में अपने प्रश्न के बारे में बात करते हैं। हम एक पीडीएफ नोड को अपग्रेड करना चाहते हैं और नोड डॉकर पर चल रहा है। हम सॉफ़्टवेयर के नए संस्करण के साथ एक नया डॉकर उदाहरण बनाते हैं, लेकिन हम पुराने संस्करण को बंद नहीं कर सकते हैं (उनके कॉल के बीच में सैकड़ों हजार ग्राहक हैं, हम उन्हें डिस्कनेक्ट नहीं कर सकते हैं)। लेकिन हमें किसी भी तरह पुराने पीडीएफ से नए संस्करण में ग्राहकों को स्थानांतरित करने की जरूरत है। तो हम पुराने पीडीएफ के बजाय अद्यतन नोड के साथ कोई नया कनेक्शन बनाने के लिए गेटवे नोड को बताते हैं। ग्राहक चतुर हो सकते हैं और उनमें से कुछ में लंबे समय से चलने वाले डेटा कनेक्शन हो सकते हैं (विंडोज 10 आईएसओ डाउनलोड करना) ताकि पूरे ऑपरेशन को पूरा होने में 2-3 दिन लग जाए। महत्वपूर्ण बग के मामले में सॉफ़्टवेयर के एक संस्करण को दूसरे में अपग्रेड करने में कितना समय लग सकता है। और इस तरह के दर्जनों सर्वर हो सकते हैं, प्रत्येक व्यक्ति सैकड़ों हजारों ग्राहकों को संभाला जा सकता है।

लेकिन क्या होगा यदि हमने इसके बजाय एरलांग रिलीज हैंडलर का उपयोग किया? हम सॉफ्टवेयर के नए संस्करण के साथ रिलेप फ़ाइल बनाते हैं। हम इसे सही तरीके से जांचते हैं और पीडीएफ नोड्स पर तैनात करते हैं। प्रत्येक नोड को जगह में अपग्रेड किया जाता है - एप्लिकेशन की आंतरिक स्थिति परिवर्तित हो जाती है, नोड सॉफ़्टवेयर का नया संस्करण चला रहा है। लेकिन सबसे महत्वपूर्ण बात यह है कि गेटवे सर्वर के साथ टीसीपी कनेक्शन नहीं छोड़ा गया है। इसलिए ग्राहक खुशी से अपनी कॉल जारी रखते हैं या नवीनतम विंडोज आईएसओ डाउनलोड कर रहे हैं जबकि हम सिस्टम को अपग्रेड कर रहे हैं। सभी 2-3 दिनों के बजाय 10 सेकंड में किया जाता है।

जवाब

इस विशिष्ट आवश्यकताओं के साथ एक विशेष प्रणाली का एक उदाहरण है। डॉकर और Erlang's Release Handling ऑर्थोगोनल तकनीकें हैं।आप या तो या दोनों का उपयोग कर सकते हैं, यह सब निम्नलिखित करने पर निर्भर करता:

  • आवश्यकताओं
  • लागत

आप जाहिर दोनों दृष्टिकोण का परीक्षण करने के लिए पर्याप्त संसाधन और काफी धैर्य अपने परिचालन टीम को पढ़ाने के लिए होगा ताकि वे किसी भी विधि का उपयोग कर सिस्टम को तैनात कर सकें? क्या होगा यदि परीक्षण सुविधा में लाखों पाउंड (आवश्यक हार्डवेयर की वजह से) की लागत हो और एक समय में केवल दो तरीकों का उपयोग कर सकें (क्योंकि परीक्षण चक्र में दिन लगते हैं)?

व्यावहारिक दृष्टिकोण प्रारंभ में डॉकर का उपयोग करके नोड्स को तैनात करना और फिर उन्हें Erlang release handler (यदि आपको पहले स्थान पर डॉकर का उपयोग करने की आवश्यकता है) के साथ अपग्रेड करना हो सकता है। या, यदि आपके सिस्टम को अपग्रेड के दौरान उपलब्ध होने की आवश्यकता नहीं है (उदाहरण के लिए पीडीएफ सिस्टम करता है), तो आप हमेशा डॉकर के साथ नए संस्करणों को तैनात करने और रिलीज हैंडलिंग के बारे में भूल सकते हैं। या आप रिलीज हैंडलर के साथ भी चिपक सकते हैं और डॉकर के बारे में भूल सकते हैं यदि आपको ऑन-द-फ्लाई पर त्वरित और विश्वसनीय अपडेट की आवश्यकता है और डॉकर केवल प्रारंभिक तैनाती के लिए उपयोग किया जाएगा। मुझे आशा है कि वह मदद करेंगे।

+0

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

+0

धन्यवाद @Aki प्रत्येक विषय पर अलग-अलग साहित्य हैं। दोनों पर चर्चा करने वाले छोटे साहित्य हैं क्योंकि उन्हें वास्तव में एक साथ चर्चा करने की आवश्यकता नहीं है। यदि आप डॉकर या किसी अन्य तकनीक के साथ एर्लंग एप्लिकेशन को तैनात किया गया था तो आप एचसीएस का उपयोग कर सकते हैं। – Amiramix

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