2017-12-22 70 views
8

हम एक नया वेब एप्लिकेशन विकसित करने के शुरुआती चरण में हैं और अमेज़ॅन क्लाउड प्लेटफ़ॉर्म का उपयोग करना चाहते हैं। हालांकि, हमारे पास Java spring ढांचे या किसी अन्य प्रोग्रामिंग भाषा/ढांचे का उपयोग कर वेब अनुप्रयोगों को विकसित करने का विकल्प है। मल्टीपाज एप्लिकेशन स्टेटलेस नहीं है यानी एप्लिकेशन को लॉग इन करने के बाद लेन-देन के लिए उपयोगकर्ता सत्र का ट्रैक रखने की आवश्यकता होती है। एक बार सभी आवश्यक जानकारी उपयोगकर्ता से कई पृष्ठों के माध्यम से कैप्चर की जाती है, तो लेनदेन डेटाबेस के लिए प्रतिबद्ध होता है।एडब्ल्यूएस लैम्ब्डा और सत्र और डेटाबेस के साथ वेब एप्लिकेशन

हालांकि, इस आवेदन के लिए एडब्ल्यूएस लैम्ब्डा सेवाओं का उपयोग करने की संभावना है। एडब्ल्यूएस लैम्ब्डा (यह जानकर कि लैम्ब्डा सेवा सत्रहीन है) का उपयोग कर उपर्युक्त आवश्यकताओं के साथ वेब एप्लिकेशन विकसित करने का सही निर्णय होगा?

उत्तर

1

यदि आप अपने सत्र डेटा के लिए बाहरी निरंतर भंडारण का उपयोग कर सकते हैं तो आपके पास लैम्बडा पर चलने वाला एक राज्यव्यापी एप्लिकेशन हो सकता है।

आप डायनेमोडीबी या लोचदार दर्द का उपयोग उदाहरण के लिए अपने सत्र डेटा के लिए अपने अस्थायी भंडारण के रूप में कर सकते हैं और एक बार सभी आवश्यक डेटा तैयार हो जाने के बाद, आप उन्हें अपने डेटाबेस प्रश्नों में स्थायी रूप से जारी रख सकते हैं।

+0

धन्यवाद डैशमुग .. क्या यह स्टेटलेस सेवा के रूप में स्टेटलेस सेवा बनाने का कामकाज नहीं है? मौजूदा भाषाओं या ढांचे का उपयोग कर पारंपरिक वेब एप्लिकेशन होने से बेहतर समाधान है जो सत्र क्षमता को निर्मित क्षमता के रूप में देता है? –

+0

मुझे यकीन नहीं है कि मैं समझता हूं कि आपका क्या मतलब है। जाहिर है, स्टेटलेस + राज्य = राज्यव्यापी। परिभाषा के अनुसार, एक कामकाज नहीं है। – dashmug

+0

भाषाएं सत्र रखरखाव प्रदान नहीं करती हैं। ढांचे के बारे में, आपको लगता है कि वे सत्र रखरखाव को कैसे लागू करते हैं? वे राज्य कैसे रखते हैं? :-) – dashmug

1

यह तय करने के लिए बहुत कुछ है कि एक सर्वर रहित वास्तुकला आपके आवेदन के लिए उपयुक्त है या नहीं। मुझे नहीं लगता कि इस सवाल का जवाब "एक आकार सभी फिट बैठता है"।

एक सर्वलेट कंटेनर कहने के बजाय लैम्ब्डा का उपयोग करना, वास्तव में सत्र दृढ़ता के संबंध में विकास के ऊपर का थोड़ा सा परिचय देता है। हालांकि, मुझे नहीं लगता कि यह आवश्यक रूप से प्राथमिक विचार होना चाहिए जब खुद से पूछें कि क्या आपके सर्वर के लिए एक सर्वर रहित आर्किटेक्चर उपयुक्त है। कैसे सत्र काम करने के लिए जा रहा है के बारे में चिंता करने से पहले, मैं अपने आप को पूछना चाहते हैं:

  • Am मैं तैयार हैं और, microservices का एक संग्रह के रूप में आवेदन लिखने के लिए अतिरिक्त परिचालन और विकास जटिलताओं कि कि दृष्टिकोण के साथ आते हैं स्वीकार करने में सक्षम?
  • क्या मैं अपने यूआई में क्लाइंट-साइड रेंडरिंग दृष्टिकोण का उपयोग करने के इच्छुक हूं? यदि नहीं, तो क्या सर्वर-साइड रेंडरिंग तकनीक मैंने लम्बाडा के साथ आसानी से एकीकृत किया है?
  • क्लाइंट पक्ष पर मैं कितना व्यावसायिक तर्क एम्बेड कर सकता हूं?
  • मेरे यातायात पैटर्न (और विस्तार से, स्केलेबिलिटी जरूरतों के अनुसार) क्या हैं? क्या मेरा यातायात स्थिर है? काँटेदार? क्या मेरे पास लंबी अवधि की निष्क्रियता है?
  • क्या सर्वर पर ईसी 2 पर cost advantage होने की संभावना है?
  • लैम्ब्डा ठंडा आपके यूएक्स के लिए कितना हानिकारक होगा?
  • अंत में, सत्र के संबंध में, सत्र में डेटा कितना संवेदनशील है? जेडब्ल्यूटी का उपयोग कर एक "स्टेटलेस" सत्र है?

यदि आपका आवेदन वास्तव में एक सर्वर रहित वास्तुकला के लिए एक अच्छा फिट है, तो सत्र को बनाए रखने के तरीके को समझने का ओवरहेड शायद एक सौदा ब्रेकर होने के लिए इतना महंगा नहीं है।

मेरे अनुभव में, डेवलपर्स (स्वयं सहित) माइक्रोस्कोर्विसेज और (अक्सर) क्लाइंट साइड प्रतिपादन में प्रतिमान परिवर्तन के साथ और अधिक संघर्ष करते हैं, इस बात की तुलना में कि सत्र कैसे लागू किया जाता है या जारी रखा जाता है।

2

आपका प्रश्न लैम्ब्डा के लिए विशिष्ट नहीं है। एकमात्र मामला जहां सत्र प्रबंधन आसान है (उदा।स्मृति या फ़ाइल आधारित भंडारण में हल किया जा सकता है) एक सर्वर वातावरण पर है। शायद यह है कि आप कहां से आ रहे हैं।

जिस क्षण आप क्षैतिज स्केलिंग शुरू करते हैं (सर्वर में अधिक रैम/सीपीयू डालने के विरोध में मिश्रण में अधिक सर्वर डाल दें) आपको सत्रों (और कैश) के लिए केंद्रीय भंडारण की आवश्यकता होती है। यह वही है यदि आप लोड बैलेंसर के पीछे डॉकर, या ईसी 2 या यहां तक ​​कि मेटल सर्वर चुनते हैं।

ऐसा इसलिए है क्योंकि आप कभी भी यह नहीं बता सकते कि उसी उपयोगकर्ता का अगला अनुरोध उसी माहौल पर उतरेगा या नहीं। यह निश्चित रूप से लैम्ब्डा के लिए भी सच है। यद्यपि एक कामकाज है: यानी, यदि आप "चिपचिपा सत्र" का उपयोग करने के लिए लोडबैंसर का उपयोग करते हैं: यह उसी उपयोगकर्ता के प्रत्येक अनुरोध को उसी मशीन पर रूट करेगा, this AWS doc on session management देखें। लेकिन चिपचिपा सत्र हमेशा उप-स्थानिक होता है (उदाहरण के लिए स्केलिंग का मतलब सत्रों को नष्ट करना होगा) प्लंबडा के लिए, चिपचिपा सत्र संभव नहीं हैं।

वास्तविक समाधान, जैसा कि अन्य उत्तरों यहां सुझाए गए हैं, में एलिस्टिकैच के माध्यम से केंद्रीय सत्र भंडारण शामिल है। ऊपर के लिंक से एक उद्धरण:

आदेश में scalability को संबोधित करने और सत्र कि किसी भी व्यक्ति वेब सर्वर से सुलभ हो सकता है के लिए एक साझा डेटा भंडारण प्रदान करने के लिए, आप वेब सर्वर से सार HTTP सत्रों खुद को कर सकते हैं। इसके लिए एक आम समाधान है इन-मेमोरी कुंजी/वैल्यू स्टोर जैसे रेडिस और मेमकैच का लाभ उठाना।

संबंधित मुद्दे