Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कैसे websockets का उपयोग कर mysql से लाइव अधिसूचना अपडेट प्राप्त करने के लिए?

लाइव नोटिफिकेशन वह जगह है जहां वेबसोकेट फलते-फूलते हैं और AJAX पर एक बड़ा लाभ प्रदान करते हैं।

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

हां... आप on_update जोड़कर संसाधनों को बचा सकते हैं और प्रदर्शन में सुधार कर सकते हैं (साथ ही भविष्य में कोड रखरखाव संबंधी समस्याएं) डेटाबेस एक्सेस पॉइंट के लिए "हुक"।

विचार सरल है:जब भी कोई फ़ंक्शन कॉल MySQL डेटाबेस को अपडेट करता है, तो अपडेट अनुरोध भी कॉलबैक को भेजा जाता है। वह कॉलबैक अपडेट को सही चैनल पर प्रकाशित करने का प्रभारी है।

इस तरह, आप MySQL डेटाबेस को पोल नहीं करते हैं।

कुछ डेटाबेस अपडेट कॉलबैक प्रदान करते हैं और अन्य नहीं करते हैं। मुझे लगता है कि MySQL करता है। हालांकि, मैं इन डेटाबेस लिंक्ड कॉलबैक से बचता हूं क्योंकि वे डेटाबेस विशिष्ट हैं। एप्लिकेशन में डेटाबेस एक्सेस पॉइंट पर कॉलबैक जोड़ना बेहतर (IMHO) है, इसलिए डेटाबेस को बदलने से कोड-बेस प्रभावित नहीं होता है।

मुझे नहीं लगता कि AJAX एक अच्छा तरीका है।

HTTP/2 AJAX की कमियों को कम करने में मदद करता है, लेकिन यह उन सभी को हल नहीं करता है।

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

इस पर विचार करें:यदि कोई क्लाइंट 2,000 समवर्ती क्लाइंट की तुलना में हर दो सेकंड में AJAX अनुरोध भेजता है, तो आपके सर्वर को 1,000 req/sec का जवाब देना होगा - इनमें प्रमाणीकरण, डेटाबेस क्वेरी और सभी जैज़ शामिल हैं।

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

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

वेबसोकेट दृष्टिकोण से संबंधित सामान्य मुद्दों में क्षैतिज स्केलिंग (अक्सर एक पब/उप डेटाबेस या सेवा, जैसे रेडिस जोड़कर), संदेश आदेश (जिसे संभव होने पर बेहतर अनदेखा किया जाता है) और डेटा प्रसार चिंताओं (हम कब चिह्नित करते हैं) को संभालना शामिल है डेटा को "देखा" के रूप में? क्या हम संपूर्ण डेटा या केवल एक सूचना भेजते हैं जिसमें कहा गया है कि डेटा उपलब्ध है? हम कितने चैनलों का उपयोग करते हैं और हम सदस्यता को कैसे विभाजित करते हैं?)।

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

वैसे भी... शुभकामनाएँ!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:पिछले महीने और महीने पहले का चयन करें

  2. MySQL, खाली मूल्यों के बराबर बराबर?

  3. सभी रिकॉर्ड कैसे गिनें लेकिन केवल प्रदर्शन के लिए एक विशिष्ट संख्या पुनर्प्राप्त करें (LIMIT)?

  4. लारवेल के वाक्पटु का उपयोग करके JSON कॉलम में खोजें

  5. ढेर सारे टेक्स्ट डेटा में रुझान ढूँढना