मैंने पॉल डीक्स की पुस्तक सेवा-ओरिएंटेड डिजाइन को RoR के साथ पढ़ना अभी समाप्त कर दिया है और मैं एक रेल 3 वेब ऐप आधारित बनाना चाहता हूं जो मैंने अभी सीखा है उस पर।एक सर्वर पर एकाधिक रेल सेवाओं को होस्ट करना + एपीआई सक्षम वेबसाइट की वास्तुकला
मुझे लगता है कि मुझे मूल आर्किटेक्चर सही मिला है, लेकिन एक साधारण सवाल मुझे अवरुद्ध कर रहा है: मुझे एक ही सर्वर पर कई आरईएसटी सेवाओं को कैसे होस्ट करना है?
यहां बताया गया है मैं पल के लिए चीजों को देखने के:
- बनाएं * सेवा क्षुधा (UserService, XYZFeatureService, ...) सिनात्रा (मुझे लगता है) है, जो उन संसाधनों तक पहुंच के लिए बाकी अंतिमबिंदुओं प्रदान के आधार पर
- नियंत्रक/विचार/... के साथ फ्रंट-एंड रेल ऐप रखें जो विभिन्न सेवाओं से डेटा का उपभोग करता है। उदाहरण के लिए अंतिम उपयोगकर्ता इसे
http://www.myapp.com
के माध्यम से एक्सेस करेंगे। - और आखिरकार एक बाहरी एपीआई प्रकाशित करने के लिए
https://api.myapp.com/*
याhttps://www.myapp.com/api/*
पर कॉल को संभालने के लिए एक स्टैंडअलोन "एपीआई" ऐप है जो संभावित प्रमाणीकरण, थ्रॉटलिंग और इसी तरह के साथ समान सेवाओं का उपभोग करेगा।
क्या यह आपके लिए अच्छी शुरुआत की तरह लगता है?
जहां तक कार्यान्वयन होता है, मैंने पुस्तक में जो पढ़ा है, उससे मैं रेल ऐप और सेवाओं के बीच संचार को संभालने के लिए रत्न बनाने की योजना बना रहा हूं (मैं कुछ खरगोश एमक्यू में फेंक सकता हूं लेकिन यह एक और कहानी है)।
हालांकि, जैसा कि मेरे पास केवल एक भौतिक सर्वर है, मैं सोच रहा हूं कि मैं उन सभी ऐप्स/सेवाओं को एक साथ कैसे रहने जा रहा हूं? मेरा पहला अनुमान स्थानीय सेवा पर प्रत्येक सेवा ऐप लॉन्च करना है: xxxx जहां xxxx प्रत्येक सेवा के लिए एक अलग अनधिकृत बंदरगाह है। मैं उन बंदरगाहों का उपयोग करने के लिए अपने रेल ऐप में प्रत्येक क्लाइंट मणि को कॉन्फ़िगर कर सकता हूं।
इसके साथ-साथ, मैं शायद रेलवे फ्रंट एंड एंड एपीआई सेवा की सेवा के लिए अपाचे 2 + पैसेंजर चलाऊंगा, जैसे कि रैक :: URLMap (या सबडोमेन का उपयोग करते हुए वर्चुअल होस्ट) का उपयोग करके अनुरोधों को प्रत्यक्ष करने के लिए सही ऐप क्या मुझे अपने पर्यावरण को उत्पादन वातावरण में चलाने के लिए पैसेंजर का उपयोग करना चाहिए?
क्या यह सही तरीका है ?! यह जो मैंने पढ़ा और सीखा है उसके साथ संगत लगता है, और यदि आवश्यक हो तो भी आसानी से कई भौतिक सर्वरों में विभाजित हो जाता है, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि मुझे कुछ याद नहीं आ रहा है। क्या आप चीजों को अलग-अलग बनायेंगे?
धन्यवाद आपके इनपुट के लिए बहुत कुछ!
अद्यतन
मुख्य सवाल है मैं एक चाहते हैं जवाब देखने के लिए कर रहे हैं:
- वर्णित वास्तुकला बाहरी API अंतिम बिंदुओं के साथ एक वेब अनुप्रयोग का निर्माण करने के लिए उचित है?
- क्या यह अलग-अलग बंदरगाहों पर एक सर्वर पर चल रही सेवाओं के लिए ठीक है?
धन्यवाद!
http://confreaks.net/videos/709-rubyconf2011-threading-versus- को देखने के बाद देखें कि आप jRuby में बदलना चाहते हैं। यात्री के साथ nginx जाने के लिए एक और आम रास्ता है। – drhenner
@ user458221 धन्यवाद, मुझे इस वीडियो पर एक नज़र डालेंगे :) हालांकि मेरी चिंता इस पल के लिए वास्तुकला और डिजाइन विकल्पों के बारे में अधिक है! लेकिन मुझे लगता है कि प्रदर्शन के बारे में चिंता करने योग्य भी है ^^ –