Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Ruby में एप्लिकेशन सर्वर्स को समझना: Puma क्यों मायने रखता है

एप्लिकेशन सर्वर्स को समझना

आइए मान लें कि आप Ruby में अपना नया चमकदार वेब एप्लिकेशन बनाना शुरू करते हैं।

और कोई कोड लिखने से पहले...

आप इसे अपने ब्राउज़र में लोड होते देखना चाहते हैं, भले ही केवल डिफ़ॉल्ट "वेलकम" पेज देखने के लिए।

तो आप अपना ब्राउज़र खोलते हैं, आप इसे localhost:3000 पर इंगित करते हैं, या शायद localhost:4567 यदि आप Sinatra का उपयोग कर रहे हैं।

तब क्या होता है?

आपका ब्राउज़र localhost से जुड़ता है, पोर्ट 3000 पर, जहां Puma जैसा एक Ruby एप्लिकेशन सर्वर इंतजार कर रहा है।

localhost एक विशेष IP एड्रेस, 127.0.0.1 को इंगित करता है, जो हमेशा आपके कंप्यूटर को संदर्भित करता है

अब:

Puma का काम, या किसी अन्य रैक-आधारित सर्वर (जैसे Thin / Unicorn) का, ब्राउज़र के अनुरोध को संभालना और इसे एक सामान्य इंटरफेस के माध्यम से आपके एप्लिकेशन तक पास करना है।

हम किस इंटरफेस की बात कर रहे हैं?

Rack।

मैं Rack को दूसरे आर्टिकल में विस्तार से समझाता हूँ।

Puma पर वापस।

हम ऐप सर्वर का उपयोग क्यों करते हैं, बजाय इसके कि Rails सीधे अनुरोधों को संभाले?

बहुत अच्छा सवाल।

हम ऐसा इसलिए करते हैं क्योंकि यह सॉफ्टवेयर डिज़ाइन के एक मौलिक सिद्धांत की अनुमति देता है।

चिंताओं का पृथक्करण!

चिंताओं के पृथक्करण को समझना

Rails का काम और आपके एप्लिकेशन का काम यूज़र अनुरोध को पूरा करना है।

उदाहरण के लिए:

  • एक नया अकाउंट बनाएं
  • चेक करें कि लॉगिन क्रेडेंशियल्स मान्य हैं
  • एक प्रोडक्ट पेज दिखाएं जहां आप 100% कोको चॉकलेट बार खरीद सकते हैं

आपका ऐप जो भी करता है।

  • Rails उन चीज़ों का मेनू प्रदान करता है जो एक यूज़र कर सकता है, लेकिन यह शेफ भी है, यह चीज़ों को पूरा करता है
  • Puma वेटर है, यह ऑर्डर लेता है और उन्हें किचन में भेजता है

चीज़ों को इस तरह सेट अप करने से हर कोई अपना सर्वश्रेष्ठ कर पाता है।

सिर्फ इतना ही नहीं...

यह आपको शेफ को Sinatra में, या वेटर को Thin में स्विच करने की भी अनुमति देता है!

"जब चिंताओं को अच्छी तरह से अलग किया जाता है, तो मॉड्यूल पुनः उपयोग के साथ-साथ स्वतंत्र विकास और अपग्रेड के लिए उच्च डिग्री की स्वतंत्रता होती है।"
Wikipedia

आपकी स्थिति और प्राथमिकताओं के आधार पर।

एप्लिकेशन सर्वर बनाम वेब सर्वर (Nginx & Apache)

इस बिंदु पर, आप सोच रहे होंगे...

Apache या Nginx जैसा वेब सर्वर Ruby सर्वर से कैसे अलग है?

हम इन दो सर्वर्स का उपयोग क्यों नहीं कर सकते?

एक बड़ा अंतर है।

Nginx एक सामान्य वेबसर्वर है, यह एक अनुरोध को संभालता है और यदि उस अनुरोध के लिए एक मिलान वाली फाइल है तो यह उस फाइल को वापस करेगा।

लेकिन Nginx Rack के बारे में कुछ नहीं जानता, या Ruby।

यही कारण है कि हमें Puma या किसी अन्य Rack-संगत वेब सर्वर की आवश्यकता है।

हालांकि...

प्रोडक्शन में Nginx का उपयोग करना अभी भी सहायक हो सकता है।

Nginx कनेक्शन को अधिक प्रभावी ढंग से संभाल सकता है और यह आपके एप्लिकेशन को अनुरोध अग्रेषित किए बिना स्टेटिक एसेट्स (css और js फाइलें) सर्व कर सकता है।

Puma को समझना

अब जब हम समझते हैं कि एक एप्लिकेशन सर्वर क्या है और यह उपयोगी क्यों है।

हम Puma पर ही नज़र डाल सकते हैं।

आप Puma को अन्य सर्वर्स पर क्यों चुनना चाहेंगे?

पहला:

यह Heroku का अनुशंसित सर्वर है।

वे जिस मुख्य कारण का उल्लेख करते हैं वह यह है कि यदि आप Unicorn का उपयोग करते हैं - एक वैकल्पिक ऐप सर्वर - तो आप धीमे क्लाइंट हमलों के प्रति संवेदनशील हैं।

इसके अलावा:

Puma मल्टी-थ्रेडेड है, जिसके परिणामस्वरूप आमतौर पर कम मेमोरी उपयोग होता है।

"ऑपरेटिंग सिस्टम एक मल्टीथ्रेडेड प्रोग्राम की ओर से एक मल्टीप्रोसेस प्रोग्राम की तुलना में कम काम करता है। यह मल्टीथ्रेडेड प्रोग्राम के लिए प्रदर्शन लाभ में तब्दील होता है।"
PThreads Programming

कौन सा सर्वर तेज़ है?

इस कमांड के साथ एक साधारण Rack ऐप चलाना:

 rackup -s thin rack-simple.ru 2>1 &>/dev/null 

इसके साथ टेस्ट किया गया:

 wrk -d 20 https://localhost:9292 

मुझे ये बेंचमार्क परिणाम मिले:

  • Webrick 229.97 अनुरोध/सेकंड
  • Thin 773.20 अनुरोध/सेकंड
  • Puma 2035.34 अनुरोध/सेकंड

इन तीनों में से, ऐसा लगता है कि Puma आपको सर्वश्रेष्ठ प्रदर्शन देता है।

लेकिन यह मायने नहीं रखेगा यदि आपके पास एक धीमा SQL क्वेरी है, या यदि आप हर अनुरोध पर लाखों एलिमेंट्स वाले एरे के माध्यम से लूप कर रहे हैं।

सारांश

आपने Ruby में एप्लिकेशन सर्वर्स के बारे में सीखा, जैसे Puma और Thin, इसलिए अब आपके पास इस बात की बेहतर समझ है कि हम उनका उपयोग क्यों करते हैं।

Ruby में एप्लिकेशन सर्वर्स को समझना: Puma क्यों मायने रखता है

आप अपने अगले प्रोजेक्ट के लिए किसका उपयोग करने जा रहे हैं?

पढ़ने के लिए धन्यवाद! 🙂


  1. मुफ्त प्रॉक्सी सर्वर से बचने के 5 कारण मुफ्त प्रॉक्सी सर्वर से बचने के 5 कारण

    यदि क्षेत्र प्रतिबंधों ने आपको किसी वेबसाइट तक पहुंच से वंचित कर दिया है, तो आपने शायद इसे दरकिनार करने के लिए प्रॉक्सी सर्वर का उपयोग किया है। जबकि वे इन ब्लॉकों को दरकिनार करने में उपयोगी हैं, मुफ्त प्रॉक्सी सर्वर का सुरक्षा स्तर बहुत वांछित छोड़ देता है। आइए कुछ कारणों का पता लगाएं कि आपको मुफ्त

  1. Ruby on Rails में महारत: इस सिद्ध फ्रेमवर्क के साथ शक्तिशाली वेब ऐप्स तेजी से बनाएं Ruby on Rails में महारत: इस सिद्ध फ्रेमवर्क के साथ शक्तिशाली वेब ऐप्स तेजी से बनाएं

    Ruby on Rails (कभी-कभी RoR) सबसे लोकप्रिय ओपन-सोर्स वेब एप्लिकेशन फ्रेमवर्क है। यह Ruby प्रोग्रामिंग भाषा के साथ बनाया गया है। आप सिंपल से लेकर कॉम्प्लेक्स तक एप्लिकेशन बनाने में मदद के लिए Rails का उपयोग कर सकते हैं, Rails के साथ आप जो हासिल कर सकते हैं उसकी कोई सीमा नहीं है! फ्रेमवर्क क्या है? फ्र

  1. ऑबफस्केटेड सर्वर समझाया गया: ऑनलाइन सुरक्षा के लिए क्यों आवश्यक हैं ऑबफस्केटेड सर्वर समझाया गया: ऑनलाइन सुरक्षा के लिए क्यों आवश्यक हैं

    साइबर सुरक्षा आज के युग में एक महत्वपूर्ण चिंता है। हैकर्स और घुसपैठिए किसी न किसी तरह से हमारे डिजिटल जीवन में घुसपैठ करने के लिए कपटपूर्ण तरकीबें खोज रहे हैं। यह केवल समय की बात है जब हम उनके शातिर जाल में फंस जाते हैं और पलक झपकते ही अपने संवेदनशील डेटा को नष्ट कर देते हैं।     बढ़ती स