क्लाउड अनुप्रयोगों के लिए Erlang क्या उपयुक्त है?


9

हम एक नई परियोजना शुरू कर रहे हैं और एक ओपनस्टैक क्लाउड के हमारे निगमों की तात्कालिकता को लागू कर रहे हैं (देखें http://www.openstack.org/ )। परियोजना हमारे निगम के लिए सुरक्षा उपकरण है। हम वर्तमान में सुरक्षा उपकरणों के लिए कई सैकड़ों समर्पित सर्वर चलाते हैं और उन्हें ओपनस्टैक के हमारे निगमों के लिए स्थानांतरित कर रहे हैं।

मेरी कंपनी की अन्य परियोजनाएं वर्तमान में कई वितरित सर्वर अनुप्रयोगों में एर्गलैंग का उपयोग करती हैं, और अन्य क्यू / ए प्वाइंट एरलैंग का उपयोग कई क्लाउड सेवाओं में किया जाता है। मैं इस बात पर विचार करने की कोशिश कर रहा हूं कि हमारी परियोजना पर यह कहां लागू हो सकता है।

क्लाउड प्रोग्रामिंग के लिए एरलांग की ताकत क्या है? ऐसे क्षेत्र कहां हैं जो विशेष रूप से एर्गलैंग का उपयोग करने के लिए उपयुक्त हैं?


15
"क्लाउड" को परिभाषित करें और हम आपको बता सकते हैं कि आप क्या जानना चाहते हैं। "क्लाउड" शब्द मार्केटिंग बोल है और इसका उपयोग करने वाले प्रत्येक व्यक्ति के लिए कुछ अलग करने का मतलब है।

मैंने सोचा कि ओपनस्टैक क्लाउड हम जो लागू कर रहे हैं उसकी परिभाषा के लिए पर्याप्त होगा। Openstack.org देखें । या आप परियोजना पर अधिक जानकारी का अनुरोध कर रहे हैं? यह हमारे निगम के लिए सुरक्षा उपकरण है। हम वर्तमान में सुरक्षा उपकरणों के लिए कई सैकड़ों समर्पित सर्वर चलाते हैं और उन्हें ओपनस्टैक के हमारे निगमों के लिए स्थानांतरित कर रहे हैं।
डंकन

मैंने उम्मीद से बेहतर बनाने और 'मार्केटिंग' की चिंता को दूर करने के लिए सवाल संपादित किया। मेरा मुद्दा नौकरी के लिए सबसे अच्छा उपकरण है। मैं स्टेक्सएक्सचेंज में एक बदमाश हूं, इसलिए इसके लिए बहुत लटका हुआ नहीं है।
डंकन

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

"बादल 'शब्द अस्पष्ट है" - अच्छा है! इसका मतलब आभासी कुछ है और आपको निर्दिष्ट करना चाहिए कि "कुछ" सॉफ्टवेयर, ऑपरेटिंग-सिस्टम, एक मशीन, मल्टी-मशीन-एंड-नेटवर्क, या कुछ और है।
ग्लेनपेटर्सन

जवाबों:


8

इस तथ्य के अलावा कि एरलांग को विशेष रूप से समवर्ती / समानांतर / वितरित स्थितियों में चलाने के लिए विकसित किया गया था, दो मुख्य तकनीकें जो इसे संभव बनाती हैं, वे हैं:

कोई दुष्प्रभाव नहीं:

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

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

X = 1.
X = 2. // This is not a valid operation

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

अभिनेता मॉडल:

यह मॉडलिंग का एक विशेष तरीका है जो डेवलपर्स के लिए समवर्ती प्रसंस्करण के कार्यान्वयन और प्रबंधन को बहुत सरल बनाने के लिए दिखाया गया है। विकिपीडिया से सीधे (http://en.wikipedia.org/wiki/Actor_model):

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


"नो साइड इफेक्ट्स" के बारे में आप कहते हैं "यह सॉफ्टवेयर भाषाओं के बीच एक बहुत ही असामान्य व्यवहार है" - मैं इस पर थोड़ा आश्चर्यचकित हूं। आज जावा और C # ऐसा नहीं कर सकते? क्या आप जानते हैं कि किसी फ़ंक्शन को कॉल करते समय साइड इफेक्ट्स होते हैं?
नोकझोंक

3
@EmmadKareem यह सवाल नहीं है कि आप साइड-इफ़ेक्ट के बिना कोई प्रोग्राम लिख सकते हैं या नहीं ; जैसा कि आपने उल्लेख किया है, आप इसे जावा या सी # में कर सकते हैं। यह है कि क्या डिफ़ॉल्ट साइड-इफ़ेक्ट फ्री है, और इसके लिए कंपाइलर सपोर्ट है या नहीं। उदाहरण के लिए, जावा में, आप संकलक को नहीं बता सकते हैं "इस पद्धति के दुष्प्रभाव नहीं हैं"। बदले में इसका मतलब है कि कंपाइलर आपको चेतावनी नहीं दे सकता जब आप नियम तोड़ रहे हों!
एंड्रेस एफ।

@EmmadKareem मैं यह नहीं कह रहा हूं कि बिना साइड इफेक्ट्स (हालांकि बेहद दुर्लभ) के बिना C # या जावा लिखना असंभव है, बल्कि मैं यह कह रहा हूं कि बहुत कम प्रोग्रामिंग भाषाओं में भाषा में निर्मित सख्त नीतियां हैं जो उन लोगों से साइड इफेक्ट के साथ कार्य को अलग करती हैं।
जिमी होफा

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

जिमी हॉफ़ और @AndresF।, आपकी स्पष्टीकरण के लिए धन्यवाद।
NoChance

9

Erlang समवर्ती / समानांतर कंप्यूटिंग में विशेष रूप से मजबूत है। वास्तव में, यह मूल रूप से उसी उद्देश्य के लिए डिज़ाइन किया गया था। यह क्लाउड के साथ करने के लिए अंतर्निहित कुछ भी नहीं है, सिवाय इसके कि अक्सर, गणना-भारी अनुप्रयोगों को "क्लाउड" इंस्टेंसेस में समानांतर और तैनात किया जाता है, जिससे मांग पर क्षमता बढ़ने / सिकुड़ने में आसानी होती है।

बाकी सिर्फ मार्केटिंग-स्पीच है।


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

1
@ JörgWMittag जब तक हम बालों को विभाजित कर रहे हैं ... हाँ, इसका उद्देश्य गलती सहिष्णुता प्राप्त करना था। इसने इसे समानांतर रूप से हासिल किया । इसे AX डिजिटल टेलीफोनी स्विच में लागू करने के लिए डिज़ाइन किया गया था , जो दो अतिरिक्त, समानांतर गणना पाइपों को गर्म स्टैंडबाय के रूप में काम कर रहा था।
पाप

1
हाँ, क्षमा करें, मुझे अधिक स्पष्ट होना चाहिए: क्लाउड कंप्यूटिंग को परिभाषा द्वारा बहुत अधिक वितरित किया गया है, और यह अक्सर (हमेशा नहीं बल्कि आमतौर पर) सस्ती और अधिक महत्वपूर्ण रूप से अविश्वसनीय मशीनों के समूहों द्वारा कार्यान्वित किया जाता है लेकिन एक विश्वसनीय सेवा देने के लिए डिज़ाइन किया गया है। यही एर्लैंग को इतना अच्छा बनाता है।
जॉर्ग डब्ल्यू मित्तग

3

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.