2011-06-01 16 views
14

मैंने वेबसाकेट पर जितनी भी मार्गदर्शिका और ट्यूटोरियल खोजा है, उतना ही पढ़ा है, लेकिन उनमें से एक ने कुशलता से उनका उपयोग कैसे किया है।वेबस्केट का उपयोग ... कुशलतापूर्वक?

क्या किसी के पास यह कैसे करना है इस पर कोई गाइड है? मैं बैंडविड्थ की मात्रा के बारे में चिंतित हूं, एक कनेक्शन ले सकता है, खासकर जब अनुप्रयोगों के कनेक्शन के हुंडरेन्ड खोले जाते हैं।

+0

दरअसल मुझे लगता है कि मेजबान उन पिल्ले को लाइन में रखने के लिए बहुत अच्छा प्रदर्शन करेगा, या आईएसपी होगा। – jcolebrand

+1

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

+1

तो आप websockets के लिए क्यूओएस चाहते हैं ... या वास्तव में क्या? उनमें से एक वैश्विक अधिकतम? क्या आप यहां क्लाइंट या सर्वर के बारे में चिंतित हैं? – jcolebrand

उत्तर

26

वेबसॉकेट में दक्षता उन वेबसर्वर के कार्यान्वयन और वास्तुकला पर निर्भर करती है जो उन्हें संभालती हैं। वेबसॉकेट केवल 2 बाइट (!) ओवरहेड के साथ एक बहुत ही कुशल प्रोटोकॉल है, सभी अजाक्स अनुरोध में भेजे गए सभी अलग-अलग HTTP header fields और HTTP cookies की तुलना करें।

आमतौर पर websockets के लिए एक कुशल वेबसर्वर ईवेंट संचालित होना चाहिए (नीचे दिए गए उदाहरण देखें)। इसके विपरीत, वेब सर्वर को लागू करने का पारंपरिक तरीका प्रति अनुरोध एक नया धागा उत्पन्न करना है। लेकिन धागे बहुत मेमोरी आवंटित करते हैं उदा। प्रति थ्रेड 256 एमबी। इसलिए यदि आपके सर्वर पर 1 जीबी मेमोरी है तो आप समसामयिक रूप से कई अनुरोधों को संभाल नहीं सकते हैं। लेकिन यदि आपका सर्वर इवेंट-संचालित है तो आपका मेमोरी उपयोग लगभग स्थिर रहेगा, क्योंकि नए धागे नहीं बनाए जाते हैं। यह भी देखें Technically why is processes in Erlang more efficient than OS threads?

आप अपने वेबसाकेट में कोई भी डेटा भेज सकते हैं। यदि ग्राहक एक वेब ब्राउज़र है, या शायद typed arrays है तो JSON कुशल है। यदि आपका ग्राहक एक कस्टम एप्लिकेशन है, तो आप Protocol Buffers का उपयोग कर सकते हैं। यह भी देखें Google Wave Client-Server Protocol Whitepaper

आप Twisted (पायथन) या Netty (जावा) का उपयोग कर कुशल वेबसाइकिल सर्वर लागू कर सकते हैं। Play Framework नेटी पर लागू जावा और स्कैला के लिए एक कुशल वेब ढांचा है। एक और कुशल विकल्प Yaws वेब सर्वर (Erlang) या Node.js + Socket.io (जावास्क्रिप्ट) है।

एक एप्लिकेशन डेवलपर के रूप में, कम डेटा जो आप अधिक कुशल (कम यातायात) भेजते हैं और आपके सर्वर पर कम लोड भेजते हैं।

+0

के माध्यम से कई वेब-फार्म नोड्स के बीच कनेक्शन वितरित करके निपटाया जाता है क्या आप विस्तार कर सकते हैं कि थ्रेड 256 एमबी का उपयोग कैसे कर सकता है? क्या यह विशेष रूप से वेबसॉकेट तकनीक के साथ कुछ करना है? –

+0

थ्रेड मेमोरी ओएस और प्रौद्योगिकी पर निर्भर करता है। आम तौर पर, 64-बिट बाइट सिस्टम पर एक जेवीएम के लिए धागा 1024k स्मृति, 256 एमबी नहीं। एक थ्रेड एक हल्के वजन की प्रक्रिया है, पूरे ओएस नहीं। – user3000951

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