2015-11-25 21 views
40

क्या एडब्ल्यूएस लैम्ब्डा में एक फ़ंक्शन बनाना संभव है जो वेबसाईट बनाता है और सब्स्क्राइब किए गए एप्लिकेशन पर डेटा भेजता है?क्या AWS Lambda के साथ सॉकेट.io का उपयोग करना संभव है?

कुछ इस तरह:

जॉन एप्लिकेशन SuperPhotoApp उसका फोन में खोला गया है, लेकिन SuperPhotoApp सेवा (एक S3 बाल्टी) के लिए एक तस्वीर अपलोड करने के लिए डेस्कटॉप ब्राउज़र का उपयोग करने का फैसला करता है, इस घटना को एक लैम्ब्डा समारोह है कि बनाता है कार्यान्वित एक socket.io सर्वर और सभी ग्राहकों को अपडेट को धक्का देता है, उसके फोन में ऐप खोला गया था, इसलिए ऐप स्वचालित रूप से नई तस्वीर के साथ अपडेट हो जाता है।

यह कुछ ऐसा है जो पुश नोटिफिकेशन या अमेज़ॅन एसएनएस के साथ किया जा सकता है, लेकिन अगर मुझे रीयल-टाइम व्यवहार की आवश्यकता है उदाहरण के लिए एक ऑनलाइन गेम जहां मुझे किसी चरित्र की स्थिति अपडेट करने की आवश्यकता है।

यदि यह लैम्ब्डा के साथ संभव नहीं है, तो क्या कोई समाधान है जहां मैं डेस्कटॉप ब्राउज़र का उपयोग करके अपना खोला ऐप अपडेट कर सकता हूं?

अमेज़ॅन ईसी 2 एकमात्र विकल्प है? मैंने पढ़ा है कि इसमें स्केलिंग के साथ समस्याएं हैं, इसलिए मैं लैम्ब्डा पर टिप्पणी कर रहा हूं।

उत्तर

23

मुझे नहीं लगता कि लैम्ब्डा आपके द्वारा वर्णित मामले के लिए काम करने जा रहा है। एडब्लूएस फोरम के लिंक से पता चलता है कि लैम्ब्डा फ़ंक्शन केवल अधिकतम 5 मिनट के लिए चला सकता है और आगे से 100% फ़ंक्शन रनटाइम से शुल्क लिया जाता है, यह संभवतः लागत-निषिद्ध होगा। अमेज़ॅन से एक टिप्पणी है कि उन्होंने कई बार अनुरोध सुना है, इसलिए इस के लिए अनुमति देने के लिए किसी भी तरह से रुचि है।

https://forums.aws.amazon.com/thread.jspa?threadID=205761

यहाँ जो सफलता का एक अच्छा सौदा EC2 और NodeJS का उपयोग कर के लिए प्रकट होता है किसी से एक पोस्ट है, लेकिन वह Socket.io बुलाया WebSockets/ws के लिए एक विकल्प का उपयोग करने के लिए किया था।

http://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/

आप एक लोड संतुलन यह लग रहा है आप के माध्यम से कूद करने के लिए कुछ और हुप्स करने जा रहे हैं की तरह पीछे अपने सर्वर को चलाने के लिए योजना बना रहे हैं:

https://web.archive.org/web/20160118124227/http://coding-ceo.ghost.io/how-to-run-socket-io-behind-elb-on-aws

+0

अंतिम लिंक टूटा हुआ है। मुझे एक ही विषय पर एक और ब्लॉग पोस्ट मिला - https://medium.com/@Philmod/load-balancing-websockets-on-ec2-1da94584a5e9 – Suhas

36

हाल AWS released support of WebSockets for IoT सेवा। सर्वर रहित वेब अनुप्रयोगों के लिए पब/उप संदेश प्रणाली के रूप में उपयोग करना बहुत आसान है। आप AWS lambda function से http post request के माध्यम से नए संदेश पोस्ट कर सकते हैं और उन्हें क्लाइंट पर वेबसाकेट संदेश के रूप में प्राप्त कर सकते हैं।

मैंने एक छोटा एनपीएम पैकेज लिखा जो फ्रंट-एंड ऐप से एमक्यूटीटी सर्वर पर वेबस्केट कनेक्शन को संभालता है। aws-mqtt-client

13

नहीं देखें! लैम्ब्डा socket.io के लिए डिज़ाइन नहीं किया गया था। लैम्ब्डा को केवल शॉर्ट-टाइम प्रोसेसिंग के लिए डिज़ाइन किया गया था।

यदि आप सस्ते नोटिफिकेशन प्रदान करना चाहते हैं, तो आप PubNub या Realtime Framework जैसी बाहरी सेवाओं को आजमा सकते हैं।

यदि आप केवल अमेज़ॅन सेवाओं का उपयोग करना चाहते हैं, तो SNS पर प्रयास करने से परेशान न हों क्योंकि यह इस उपयोग के मामले में नहीं होगा (ब्राउज़र के लिए कोई अंत बिंदु नहीं है)।

हालांकि, आप AWS IoT को आजमा सकते हैं।मुझे पता है कि यह अजीब लगता है, लेकिन चूंकि यह एमक्यूटीटी के माध्यम से ब्राउज़र का समर्थन करता है, यह सस्ता, तेज़ और सूचनाओं को विकसित करने में आसान है। एक महान ट्यूटोरियल के लिए this लिंक का पालन करें। डेमो कोड here उपलब्ध है।

2

मुझे लगता है कि आप अन्य PUB/SUB सेवा जैसे PUBNUB https://www.pubnub.com/docs/pubnub-rest-api-documentation के साथ एडब्ल्यूएस लैम्ब्डा को जोड़ सकते हैं।

  1. सामने के अंत/एप्लिकेशन को गतिशील बना सकते हैं और विषयों का प्रबंधन करने के एडब्ल्यूएस लैम्ब्डा का उपयोग
  2. सामने के अंत/एप्लिकेशन
  3. सामने के अंत/एप्लिकेशन इसी विषय में शामिल होने और संदेश भेजने के एडब्ल्यूएस लैम्ब्डा या डीबी से विषय की जानकारी प्राप्त करें PUBNUB को सीधे
+0

क्या कोई और उस लिंक पर क्लिक करने से डरता था? – Jatin

1

यदि आपके पास वास्तविक समय की स्थिति है जहां आपको वास्तविक समय स्ट्रीम पर गणना या लीवरेज विश्लेषण करने की आवश्यकता है, तो आपको गेम से ईवेंट स्ट्रीम करने के बारे में सोचने की आवश्यकता है (जो राज्य को प्रतिबिंबित करता है खेल में बदलाव) तेजी से, उच्च उपलब्धता घटना के लिए डिजाइन मंच पर -स्ट्रीमिंग, जैसे कि कफका कार्यान्वयन जैसे एडब्ल्यूएस किनेसिस। फिर आप अपाचे स्पार्क या अपाचे स्टॉर्म जैसे रीयल-टाइम स्ट्रीमिंग एनालिटिक्स के लिए डिज़ाइन किए गए टूल से इवेंट-स्ट्रीम का उपभोग कर सकते हैं। आप स्ट्रीमिंग एनालिटिक्स (और वैकल्पिक भी अतिरिक्त घटना उपलब्ध कराए गए आंकड़ों) का उपभोग कर सकते (एडब्ल्यूएस इन प्रौद्योगिकियों दोनों के लिए कार्यान्वयन है।)

फिर एडब्ल्यूएस लैम्ब्डा (जो घटनाओं है कि आपके Kinesis पाइप लाइन के माध्यम से आ द्वारा शुरू किया जा सकता का उपयोग कर) सभी ग्राहकों को अपडेट धक्का देने के लिए।

यह आपकी समस्या के लिए एक सर्वोत्तम अभ्यास "बड़े डेटा" माइक्रोस्कोप दृष्टिकोण का एक उदाहरण है, और यह आपके स्वयं के ईसी 2 उदाहरणों और आवश्यकता के प्रबंधन से अधिक लोचदार, लागत प्रभावी, बनाए रखने में आसान और स्केलेबल होगा लोड-बैलेंसिंग और उपलब्धता और प्रतिकृति और सर्वर-स्टेट और बेवकूफता और स्केलिंग और बर्बाद संसाधनों और तैनाती पाइपलाइन और इंस्टेंस मॉनिटरिंग इत्यादि के साथ अतिरिक्त अतिरिक्त सिरदर्दों के बारे में चिंता करने के लिए ..

व्यक्तिगत रूप से, मैं पसंद करता हूं दृष्टिकोण जो कम महंगी, बनाए रखने में आसान है, बेहतर प्रदर्शन करता है, मुझे रात में सोने की अनुमति देता है, और मुझे निर्बाध नींद की सपने देखने की अनुमति देता है।

0

यदि आप वास्तविक समय की कार्यक्षमता की तलाश में हैं तो मैं फायरबेस रीयल टाइम डेटाबेस या फायरस्टोर की ओर रुख करूंगा। मैं काफी भारी उपयोग करता हूं और मुझे कहना है कि वे अद्भुत हैं। इसे यहां देखें https://firebase.google.com

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