मैंने अब तक नाइट्रोजन के साथ बहुत कम किया है, लेकिन मैं महीनों के लिए मेलिंग सूची की निगरानी कर रहा हूं, इसलिए मुझे लगता है कि इसके बारे में कुछ कहना उपयोगी है।
एरलांग और नाइट्रोजन ढांचे के सिंटैक्स के बारे में आपकी चिंता के लिए, मैं जवाब दूंगा कि यह अनावश्यकता के बजाय अपरिचितता के शुद्ध मामले की तरह लगता है। उद्देश्य से, एचटीएमएल एक सुंदर भाषा नहीं है, और इसमें बहुत सारे क्विर्क हैं। अब आप इसका इस्तेमाल कर रहे हैं, इसलिए यह इतना बुरा प्रतीत नहीं होता है। नाइट्रोजन/एर्लांग को एक मौका दें और आप पाएंगे कि आप जल्द ही इसका उपयोग भी कर सकते हैं।
अन्य भाषाओं और ढांचे की तुलना के बारे में आपके प्रश्न के लिए, मैं कहूंगा कि सबसे बड़ा अंतर यह है कि नाइट्रोजन के साथ, पूरी वेबसाइट सीधे एर्लांग रनटाइम द्वारा परोसा जा रहा है। रेल पर रूबी का एक तरीका है, लेकिन यह केवल परीक्षण के लिए है। कई अन्य ढांचे में एक लंबे समय तक चलने वाली प्रक्रिया के भीतर सबकुछ चलाने का विकल्प भी नहीं मिलता है।
पूरे वेब अनुप्रयोग और उसके अंतर्निहित बुनियादी ढांचे एक भी लंबी चलने वाली प्रक्रिया के भीतर चल रहा है कैसे साइट चलाता है पर महत्वपूर्ण प्रभाव पड़ता है:
- अपाचे के साथ
, प्रत्येक बच्चे को हर एन कनेक्शन को मार डाला जाता है, जहां N = 500 या तो, और आप यह नहीं कह सकते कि कोई दिया गया बच्चा हमेशा किसी दिए गए ग्राहक के अनुरोधों को संभाल लेगा या नहीं। चूंकि HTTP स्टेटलेस है लेकिन वेब ऐप्स को लगभग हमेशा कुछ क्लाइंट स्टेटस की आवश्यकता होती है, इसलिए एक अपाचे बच्चे को नए कनेक्शन को संभालने के हिस्से के रूप में ग्राहक स्थिति के अपने दृश्य को पुनर्निर्माण करना होगा। डिफ़ॉल्ट रूप से, इसका मतलब उस क्लाइंट के बारे में संग्रहीत लगातार डेटा के लिए डिस्क पर वापस जाना है। memcached जैसे विकल्प हैं, लेकिन इन्हें LAMP प्रकार के ढेर के मूल में नहीं बनाया गया है। एरलांग के साथ, समय-समय पर कुछ भी नहीं मारा जाता है, और एरलांग मानक सुविधाओं जैसे मेनेसिया प्रदान करता है जो डिस्क-बैक इन-मेमोरी डीबी प्रदान करता है।
संयोग से, यदि आप nginx से परिचित हैं, तो यह एरलांग के समान सिद्धांतों पर बनाया गया है, और यह उसी कारण से तेज़ है। एक वेब सर्वर चलाने वाले nginx और एक Erlang उदाहरण के बीच मुख्य अंतर यह है कि nginx प्रोग्रामिंग वातावरण नहीं है, इसलिए इसे अभी भी बाहरी कोड में बहुत सारी प्रोसेसिंग का प्रतिनिधि होना है। इसका मतलब है कि यह एक ही आईपीसी और लगातार राज्य की समस्याओं को अपाचे के रूप में साझा करता है।
क्योंकि रनटाइम निरंतर रहता है और एक पूर्ण-कार्यात्मक प्रोग्रामिंग वातावरण है, तो संभवतया आप एलएएलपी प्रकार के ढेर के साथ एरलांग में अपने सिस्टम के अधिक हिस्सों का निर्माण कर सकते हैं। यह उपर्युक्त लाभों को बढ़ाता है। आपके सिस्टम के विभिन्न हिस्सों में हेवीवेट आईपीसी और माईएसक्यूएल के बजाय संदेश गुजरने और मैनेशिया के माध्यम से समन्वय हो सकता है, और सभी टुकड़े लगातार बने रहते हैं और लगातार चलते हैं, जिससे कम समय लेने वाली राज्य पुनर्निर्माण होता है।
एक दर्जन या तो अपाचे बच्चे लगातार ग्राहक डेटा डेटा स्टोर तक पहुंचने वाले सभी लॉक-आधारित हेयरबॉल हैं। फ्रेमवर्क सभी लॉकिंग को संभालते हैं और आपके लिए पारदर्शी रूप से, लेकिन वे जो छुपा नहीं सकते वह वह समय है जो इसे सही तरीके से करने में होता है।
एरलांग एक अशुद्ध कार्यात्मक भाषा है, जिसका तात्पर्य है लेकिन डेटा शुद्धता की आवश्यकता नहीं है; यह मल्टीप्रोसेसिंग के साथ भी बनाया गया है, जो रनटाइम डिज़ाइन के मूल तक स्पष्ट हो जाता है। इन दो तथ्यों का मतलब है कि आप किसी अन्य ढांचे में से एक पर बने एक ईरलींग आधारित सर्वर में ताले पर प्रतीक्षा करने में समय बिताने की संभावना कम हैं। अन्य प्रणालियों में लॉक देरी को दूर करना निश्चित रूप से संभव है, लेकिन क्या वास्तव में आप क्या करना चाहते हैं? क्या आप हजारों टीम में रहना चाहते हैं, जो सीखना है कि सेवा लोकप्रिय होने के बाद अपने वेब स्टैक को अनुकूलित कैसे करें, या आप इसे टूलिंग तक छोड़ देंगे, ताकि आप अपना समय कुछ और कर सकें जो किसी और ने अभी तक नहीं किया है ?
स्रोत
2010-05-24 23:56:44
यदि वेनिला एरलांग वाक्यविन्यास आपको परेशान करता है तो दो वैकल्पिक विकल्प जो आपको वैकल्पिक वाक्यविन्यास के साथ एरलांग देते हैं: एलएफई (लिस्प स्वादयुक्त एरलांग) जो आपको एक पूर्ण लिस्प वाक्यविन्यास देता है और http://github.com/rvirding/lfe पर मिलता है ; इफेन जो आपको सिंटैक्स की तरह एक और जावास्क्रिप्ट/पायथन देता है और http://marianoguerra.com.ar/efene – rvirding