2014-04-26 2 views
9

मैं PHP/MySQL में अपने आराम क्षेत्र से दूर जा रहा हूं क्योंकि वाक्यविन्यास/encapsulation/प्रक्रियात्मक सामग्री निराशाजनक हो सकता है।क्या वेबस्केट्स का उपयोग करने के लिए कोई सर्वर लागत है?

पिछले हफ्ते, मैंने लाइव चैट एप्लिकेशन बनाने के लिए नोड.जेएस/सॉकेट.आईओ का उपयोग करने के लिए चारों ओर खेला और कुछ ट्यूटोरियल्स का पालन किया। इस बिंदु तक, मैंने वेबस्केट्स के साथ कभी भी कुछ नहीं किया है, और वे वास्तव में शांत लगते हैं - सर्वर और क्लाइंट के बीच तत्काल संचार अद्भुत है।

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

वेबसाकेट कैसे काम करते हैं, फिर? अगर मेरे चैट ऐप पर एक बार में दो सौ लोग थे, तो क्या सर्वर ओवरलोड नहीं होगा? जब मैं किसी सर्वर पर PHP/MySQL का उपयोग करता हूं, तो सर्वर केवल एक ही समय में एक अनुरोध को संसाधित करता है - और यदि मैं AJAX और मतदान का उपयोग करना चाहता था, तो कहें, हर एक सेकंड में, मुझे लगता है कि यह तेज़ी से आगे बढ़ेगा क्योंकि आपके पास हजारों अनुरोध एक मिनट के लिए।

मेरा सवाल है, बड़े अनुप्रयोगों के लिए वेबसाकेट स्केल करें? क्या यह वास्तव में उच्च बैंडविड्थ सर्वर के बिना व्यावहारिक है?

मुझे लगता है कि यह नीचे आता है: क्या लगातार अंतराल, धूमकेतु और वेबसाकेट पर AJAX मतदान के बीच एक महत्वपूर्ण सर्वर लोड/उपयोगकर्ता अनुभव अंतर है?

धन्यवाद!

उत्तर

15

वेबसाकेट आमतौर पर here और here जैसे काम करने के तरीके के बारे में पढ़ने के लिए बहुत अच्छी अवलोकन साइटें हैं।

संक्षेप में, वे एक निश्चित प्रकार के HTTP अनुरोध के साथ एक कनेक्शन शुरू करते हैं और उसके बाद, वे क्लाइंट और सर्वर के बीच एक प्रत्यक्ष टीसीपी द्वि-दिशात्मक कनेक्शन होते हैं।

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

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

+1

सभी के पास अच्छे जवाब थे, लेकिन मुझे धूमकेतु को संबोधित करने के लिए और ट्रीहाउस लिंक के लिए अपना पसंदीदा बनाना है, जो एक अच्छा अवलोकन है। मैंने इस सामान के लिए गुगलिंग की कोशिश की, लेकिन मुझे नहीं लगता कि मैं अभी तक खोजशब्दों को भी जानता हूं। धन्यवाद! –

5

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

यह सही है कि प्रत्येक सक्रिय ग्राहक के पास एक व्यक्तिगत कनेक्शन खुल जाएगा। तो जब आपके पास एक साथ कई ग्राहकों (बहुत से हजारों) हैं, तो आप अपने वेबसर्वर, ढांचे या ऑपरेटिंग सिस्टम की कनेक्शन सीमा को मार सकते हैं, लेकिन ये सीमाएं आमतौर पर विन्यास योग्य होती हैं।

3

वेबसाकेट्स के बारे में सीखना शुरू करने के लिए एक अच्छी जगह और यह कैसे काम करती है here है। अप्रत्याशित नेटवर्क समस्याओं या क्लाइंट या सर्वर के कनेक्शन को छोड़कर स्पष्ट रूप से कनेक्शन समाप्त करने का निर्णय लेने के अलावा वेबसॉकेट कनेक्शन "कभी नहीं" समाप्त हो जाते हैं।

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

यदि कुछ भी हो, तो वेबस्केट्स के साथ ओवरहेड कम हो सकता है क्योंकि आप लंबे मतदान या इसी तरह के समाधान के मामले में कनेक्शन नहीं बना रहे हैं और कनेक्शन को फाड़ रहे हैं।

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

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