रेस्ट एपीआई सर्वर के लिए स्काला फ्रेमवर्क? [बन्द है]


105

हम अपने रेस्ट एपीआई सर्वर (यह वेब सेवा के अंदर है, सिम्फनी पीएचपी पर) स्केला के लिए कई कारणों से सोच रहे हैं: गति, कोई ओवरहेड, कम सीपीयू, कम कोड, स्केलेबिलिटी, आदि। मुझे स्केला तक पता नहीं था दिनों पहले लेकिन मुझे लगता है कि मैं इन दिनों स्काला किताब और सभी ब्लॉग पोस्ट और सवालों के साथ सीख रहा हूं (यह इतना बदसूरत नहीं है!)

मेरे पास निम्नलिखित विकल्प हैं:

  • खरोंच से बाकी एपीआई सर्वर का निर्माण
  • स्कैलात्रा जैसे छोटे स्कैला वेब ढांचे का उपयोग करें
  • लिफ्ट का उपयोग करें

कुछ चीजें जिनका मुझे उपयोग करना होगा: HTTP अनुरोध, JSON आउटपुट, MySQL (डेटा), OAuth, Memcache (कैश), लॉग, फ़ाइल अपलोड, आँकड़े (शायद Redis)।

आप क्या सुझाव देंगे?

जवाबों:


87

किसी विशेष क्रम में नहीं:


1
धन्यवाद! मैं AKKA पर जाँच करूँगा, क्योंकि यह बहुत हल्का और स्केलेबल लगता है
fesja

1
NB मुझे आशा है कि किसी को Scala को restfulie.caelum.com.br को एकीकृत या पोर्ट करने के आसपास मिलता है । एक विकल्प अब रेस्टुफी का उपयोग जुराबी पर स्काला के सामने एक दृश्य के रूप में कर रहा है।
ओलूइज

3
+1, मैं एक उच्च-प्रदर्शन एपीआई सर्वर को बिजली देने के लिए काम पर अक्का का उपयोग करता हूं। अक्का के साथ JAX-RS का उपयोग करने का नकारात्मक पहलू यह है कि JAX-RS एक जावा जावा के साथ लोड होता है जो कि शुद्ध-स्काला परियोजना में बहुत सफाई से फिट नहीं होता है। फिर भी, अक्का पूरा सौदा करने लायक बनाता है।
मैक्स ए।

2
अक्का एक अच्छा विकल्प है। यदि आप JSON की सेवा कर रहे हैं, तो लिफ्ट JSON पर एक नज़र डालें। आप मिश्रण और मैच कर सकते हैं, कोई समस्या नहीं।
साइक्ज़ेरोनका

1
@santiagobasult मैं कहूँगा कि खेलो! 2.0 और प्ले-मिनी! 2.0 हुआ
ओलेइज़

22

मैं अनफिल्टर्ड की सिफारिश करने जा रहा हूं । यह एक मुहावरेदार वेब फ्रेमवर्क है जो चीजों को "स्केल रास्ता" करता है और बहुत सुंदर है।


15

Xitrum पर नज़र डालें (मैं इसका लेखक हूं), यह आपके द्वारा सूचीबद्ध सब कुछ प्रदान करता है। इसका डॉक काफी व्यापक है। README से:

Xitrum एक एसिंक्स्ट और क्लस्टर किया गया स्काला वेब फ्रेमवर्क और वेब सर्वर नेट्टी और हेज़ेलकास्ट के ऊपर है:

  • JAX-RS की भावना में URL मार्गों के लिए एनोटेशन का उपयोग किया जाता है। आपको सभी मार्गों को एक ही स्थान पर घोषित करने की आवश्यकता नहीं है।
  • Async, Netty की भावना में।
  • सत्र कुकीज़ या संकुल हेज़ेलकास्ट में संग्रहीत किए जा सकते हैं।
  • इन-प्रोसेस और क्लस्टर्ड कैश, आपको अलग कैश सर्वर की आवश्यकता नहीं है।
  • इन-प्रोसेस और क्लस्टर किए गए धूमकेतु, आपको एक अलग कॉमेट सर्वर की आवश्यकता नहीं है।

7

मैं दो और विकल्प जोड़ूंगा: बिल्ट-इन JAX-RS सपोर्ट के साथ akka, और सीधे JAX-RS का उपयोग करके सीधे (शायद जर्सी कार्यान्वयन)। हालांकि, दूसरों की तुलना में "स्काला-वाई" कम है (मापदंडों और रास्तों को बांधने के लिए एनोटेशन पर निर्भर), JAX-RS उपयोग करने के लिए एक खुशी है, न्यूनतम पदचिह्न के साथ कोडिंग वेब सेवा की सभी समस्याओं को आसानी से हल करना। मैंने इसे एक्का के माध्यम से उपयोग नहीं किया है, मैं इसे उत्कृष्ट होने का अनुमान लगाता हूं, यह निरंतरता-आधारित कार्यान्वयन के माध्यम से प्रभावशाली मापनीयता प्राप्त कर रहा है।


धन्यवाद! मैं JAX-RS के साथ AKB पर @Brent के रूप में जांच करूंगा और आपने कहा था। यह वास्तव में न्यूनतम पदचिह्न के साथ बहुत हल्का प्रतीत होता है जो वास्तव में एपीआई के लिए महत्वपूर्ण है, यदि आप वास्तव में तेजी से जाना चाहते हैं।
fesja

1
स्केलेबिलिटी पाने के लिए आपको JAX-RS 2.0 (जो कि अभी बीटा है) का उपयोग करना होगा क्योंकि पुराने वर्जन नॉटी थ्रेडलोकल पर निर्भर करते हैं (जो कि थ्रेड पॉज़िंग है और रिज्यूमिंग समर्थित नहीं हैं)।
एडम जेंट

4

पर एक नजर डालें फिंच , के निर्माण के लिए एक स्काला Combinator पुस्तकालय फिनेक्ल HTTP सेवाओं। फ़िंच आपको पूर्वनिर्धारित बुनियादी ब्लॉकों की संख्या से जटिल HTTP समापन बिंदु बनाने की अनुमति देता है। पार्सर कॉम्बिनेटरों के समान, फिंच एंडपॉइंट्स का पुन: उपयोग, रचना, परीक्षण और कारण के बारे में जानना आसान है।


3

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


धन्यवाद! आपको नहीं लगता कि मेमेचेस आवश्यक है? यह निश्चित रूप से निर्भर करता है, लेकिन हमारे पास कई प्रश्न हैं जो लगातार किए जाने की बहुत संभावना है, इसलिए यह समय है जब हम जीतते हैं और डेटाबेस पर कम लोड करते हैं।
fesja

डेविड पोलाक ने कल जो कहा था, मैं वास्तव में उससे दूर जा रहा हूं। मूल रूप से, लिफ्ट के भीतर कैशिंग मेमेक के कई उपयोग-मामलों को हटा देता है। : यहाँ अपने संदेश है और वहाँ मेम्कैश के बारे में सूत्र में कुछ अन्य पदों हैं groups.google.com/group/scala-base/msg/4b11cbd357bfecf0
pr1001

2

घटनास्थल पर थोड़ी देर हो गई लेकिन मैं निश्चित रूप से REST API के निर्माण के लिए गेंदबाज ढांचे का उपयोग करने की सलाह दूंगा । यह बिंदु और स्वचालित केस क्लास रूपांतरण समर्थन के लिए छोटा है!

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