यह "प्यूमा" क्या है जो आपके rails server
करने पर चलने लगता है ?
यह एक ऐप सर्वर है!
मुझे एक उदाहरण के साथ समझाएं कि एप्लिकेशन सर्वर क्या है और हमें उनकी आवश्यकता क्यों है।
ऐप सर्वर को समझना
मान लें कि आप रूबी में अपना नया चमकदार वेब एप्लिकेशन बनाना शुरू करते हैं।
और इससे पहले कि आप कोई कोड लिखें…
आप इसे अपने ब्राउज़र में लोड होते देखना चाहते हैं, भले ही केवल डिफ़ॉल्ट "स्वागत" पृष्ठ देखने के लिए।
तो आप अपना ब्राउज़र खोलें, आप इसे localhost:3000
पर इंगित करें , या शायद localhost:4567
यदि आप सिनात्रा का उपयोग कर रहे हैं।
तब क्या होता है?
आपका ब्राउज़र localhost
से जुड़ता है , पोर्ट पर 3000
, जहां एक रूबी एप्लिकेशन सर्वर जैसे प्यूमा इंतज़ार कर रहा है।
localhost
एक विशेष आईपी पते की ओर इशारा करता है, 127.0.0.1
, जो हमेशा आपके कंप्यूटर को संदर्भित करता है
अब :
प्यूमा, या किसी अन्य रैक-आधारित सर्वर (जैसे थिन / यूनिकॉर्न) का काम ब्राउज़र के अनुरोध को संभालना और एक सामान्य इंटरफ़ेस के माध्यम से इसे आपके एप्लिकेशन तक पहुंचाना है।
हम किस इंटरफ़ेस की बात कर रहे हैं?
रैक।
मैं रैक के बारे में एक अन्य लेख में विस्तार से बताता हूं।
प्यूमा पर वापस।
रेल सीधे अनुरोधों को संभालने के बजाय, हम ऐप सर्वर का उपयोग क्यों करते हैं?
बढ़िया सवाल।
हम ऐसा इसलिए करते हैं क्योंकि यह मूलभूत सॉफ़्टवेयर डिज़ाइन सिद्धांत की अनुमति देता है।
चिंताओं का पृथक्करण!
चिंताओं के पृथक्करण को समझना
रेल का काम और आपके आवेदन का काम उपयोगकर्ता के अनुरोध को पूरा करना है।
उदाहरण के लिए :
- नया खाता बनाएं
- जांचें कि लॉगिन क्रेडेंशियल मान्य हैं या नहीं
- एक उत्पाद पृष्ठ दिखाएं जहां आप 100% कोको चॉकलेट बार खरीद सकते हैं
आपका ऐप जो कुछ भी करता है।
- रेल उन चीजों का मेनू पेश करता है जो एक उपयोगकर्ता कर सकता है, लेकिन यह शेफ भी है, यह काम करवाता है
- प्यूमा वेटर है, वह ऑर्डर लेता है और उन्हें किचन में भेज देता है
चीजों को इस तरह से सेट करने से सभी को अपना सर्वश्रेष्ठ प्रदर्शन करने की अनुमति मिलती है।
केवल इतना ही नहीं...
यह आपको शेफ को सिनात्रा, या वेटर को थिन में बदलने की अनुमति भी देता है!
<ब्लॉककोट>
"जब चिंताओं को अच्छी तरह से अलग किया जाता है, तो मॉड्यूल के पुन:उपयोग के साथ-साथ स्वतंत्र विकास और उन्नयन के लिए स्वतंत्रता की उच्च डिग्री होती है।"
विकिपीडिया
आपकी स्थिति और वरीयताओं के आधार पर।
एप्लिकेशन सर्वर बनाम वेब सर्वर (Nginx और Apache)
इस समय, आप सोच रहे होंगे…
Apache या Nginx जैसा वेब सर्वर रूबी सर्वर से किस प्रकार भिन्न है?
हम इन दो सर्वरों का उपयोग क्यों नहीं कर सकते?
एक बड़ा अंतर है।
Nginx एक सामान्य वेबसर्वर है, यह एक अनुरोध को संभालता है और यदि उस अनुरोध के लिए कोई मेल खाने वाली फ़ाइल है तो वह उस फ़ाइल को वापस कर देगी।
लेकिन Nginx को रैक के बारे में कुछ भी पता नहीं है , या रूबी।
इसलिए हमें प्यूमा या किसी अन्य रैक-संगत वेब सर्वर की आवश्यकता है।
हालांकि...
उत्पादन में Nginx का उपयोग करना अभी भी सहायक हो सकता है।
Nginx कनेक्शन को अधिक प्रभावी ढंग से संभाल सकता है और यह आपके आवेदन के अनुरोध को अग्रेषित किए बिना स्थिर संपत्ति (सीएसएस और जेएस फाइलें) की सेवा कर सकता है।
प्यूमा को समझना
अब जब हम समझ गए हैं कि एप्लिकेशन सर्वर क्या है और यह क्यों उपयोगी है।
हम खुद प्यूमा . को देख सकते हैं ।
आप अन्य सर्वरों पर प्यूमा क्यों चुनना चाहेंगे?
पहले :
यह हरोकू का अनुशंसित सर्वर है।
उनके द्वारा उल्लेखित मुख्य कारण यह है कि यदि आप यूनिकॉर्न - एक वैकल्पिक ऐप सर्वर का उपयोग करते हैं - तो आप क्लाइंट हमलों को धीमा करने के लिए अतिसंवेदनशील होते हैं।
भी :
प्यूमा बहु-थ्रेडेड है, जिसके परिणामस्वरूप आमतौर पर कम मेमोरी उपयोग होता है।
<ब्लॉककोट>
"ऑपरेटिंग सिस्टम एक मल्टीथ्रेडेड प्रोग्राम की ओर से एक मल्टीप्रोसेस प्रोग्राम की तुलना में कम काम करता है। यह मल्टीथ्रेडेड प्रोग्राम के लिए एक प्रदर्शन लाभ में तब्दील हो जाता है।"
PThreads Programming
कौन सा सर्वर तेज है?
इस आदेश के साथ एक साधारण रैक ऐप चलाना:
rackup -s thin rack-simple.ru 2>1 &>/dev/null
इसके साथ परीक्षण किया गया :
wrk -d 20 https://localhost:9292
मुझे ये बेंचमार्क परिणाम मिले हैं :
- वेब्रिक 229.97 अनुरोध/सेकंड
- पतला 773.20 अनुरोध/सेकंड
- प्यूमा 2035.34 अनुरोध/सेकंड
इन तीनों में से, ऐसा लगता है कि प्यूमा ने आपको सर्वश्रेष्ठ प्रदर्शन दिया है।
लेकिन इससे कोई फर्क नहीं पड़ता कि आपके पास धीमी SQL क्वेरी है, या यदि आप प्रत्येक अनुरोध पर लाखों तत्वों के साथ सरणियों के माध्यम से लूप कर रहे हैं।
सारांश
आपने रूबी में एप्लिकेशन सर्वर के बारे में सीखा, जैसे प्यूमा और थिन, इसलिए अब आपको बेहतर समझ है कि हम उनका उपयोग क्यों करते हैं।
आप अपने अगले प्रोजेक्ट के लिए किसका उपयोग करने जा रहे हैं?
पढ़ने के लिए धन्यवाद!