WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग · पाठ

WebSockets का लोड संतुलन

स्टिकी सेशन और WebSocket अपग्रेड को सही ढंग से संभालने के लिए लोड बैलेंसर (जैसे Nginx, HAProxy) कॉन्फ़िगर कीजिए।

पाठ 2, कुल 4 में से11 चरण

WebSockets का लोड संतुलन, CoddyKit पर WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

लोड बैलेंसर के साथ WebSockets का स्केलिंग

जब आपका WebSocket एप्लिकेशन बड़ा हो जाता है, तो एक Server सभी कनेक्शनों को कुशलतापूर्वक संभाल नहीं सकता। लोड बैलेंसिंग इन कनेक्शनों को कई Servers में बाँटकर सहायता करती है।

इससे प्रदर्शन और विश्वसनीयता बेहतर होती है और आपका एप्लिकेशन अधिक उपयोगकर्ताओं को संभाल सकता है। अधिक ट्रैफ़िक वाली रीयल-टाइम प्रणालियों के लिए उपलब्धता और त्वरित प्रतिक्रिया सुनिश्चित करने का यह एक महत्वपूर्ण चरण है।

WebSocket हैंडशेक

सामान्य एचटीटीपी कनेक्शनों के विपरीत, WebSockets एक विशेष "हैंडशेक" प्रक्रिया से शुरू होते हैं, जिसमें एचटीटीपी का उपयोग होता है। आपका क्लाइंट Server को एक प्रारंभिक एचटीटीपी अनुरोध भेजता है और कनेक्शन को "अपग्रेड" करने का अनुरोध करता है।

इस अनुरोध में विशिष्ट एचटीटीपी हेडर शामिल होते हैं, जो प्रोटोकॉल बदलने के इरादे का संकेत देते हैं। यदि Server सहमत होता है, तो वह एचटीटीपी 101 Switching Protocols स्थिति के साथ उत्तर देता है और कनेक्शन पूर्ण द्विदिश WebSocket बन जाता है।

लोड बैलेंसर और अपग्रेड हेडर

सामान्य एचटीटीपी लोड बैलेंसर WebSocket अपग्रेड अनुरोध को सही ढंग से संसाधित नहीं कर सकता। हैंडशेक के लिए आवश्यक विशेष एचटीटीपी हेडर को सही ढंग से आगे भेजने हेतु उसे विशिष्ट कॉन्फ़िगरेशन की आवश्यकता होती है। इन हेडर में शामिल हैं:

  • Connection: Upgrade
  • Upgrade: websocket
  • Sec-WebSocket-Key
  • Sec-WebSocket-Version

सही ढंग से आगे न भेजे जाने पर WebSocket हैंडशेक विफल हो जाएगा और कनेक्शन स्थापित नहीं हो पाएगा।

Sticky Sessions: WebSockets के लिए आवश्यक

WebSocket कनेक्शन स्थापित होने के बाद वह स्थायी रहता है। अक्सर यह बहुत महत्वपूर्ण होता है कि क्लाइंट के बाद के सभी संदेश उसी बैकएंड Server को भेजे जाएँ जिसने प्रारंभिक हैंडशेक संभाला और कनेक्शन स्थापित किया था।

इसे "Sticky session" या "सत्र स्थायित्व" कहा जाता है। यदि क्लाइंट के संदेश किसी दूसरे Server पर भेजे जाते हैं, तो कनेक्शन टूट जाएगा या अनपेक्षित तरीके से व्यवहार करेगा, क्योंकि नया Server मौजूदा WebSocket सत्र को पहचान नहीं पाएगा।

Sticky Sessions कैसे काम करती हैं

लोड बैलेंसर Sticky sessions सुनिश्चित करने के लिए अलग-अलग विधियों का उपयोग करते हैं:

  • IP हैश: लोड बैलेंसर क्लाइंट के IP पते का उपयोग करके उसे लगातार उसी बैकएंड Server पर भेजता है। यह सरल है, लेकिन यदि कई उपयोगकर्ता एक ही IP साझा करते हैं (जैसे NAT के पीछे), तो कम प्रभावी होता है।
  • कुकी-आधारित: लोड बैलेंसर क्लाइंट के ब्राउज़र में एक विशेष कुकी सेट करता है। बाद के अनुरोधों में यह कुकी शामिल होती है, जिससे लोड बैलेंसर उन्हें सही Server पर भेज पाता है। यह विधि आम तौर पर अधिक विश्वसनीय होती है।

Nginx: WebSocket अपग्रेड को प्रॉक्सी करना

Nginx एक लोकप्रिय, उच्च-प्रदर्शन वाला वेब Server है, जो रिवर्स प्रॉक्सी और लोड बैलेंसर के रूप में भी उत्कृष्ट है। WebSockets को संभालने के लिए Nginx को अपग्रेड हेडर सही ढंग से आगे भेजने हेतु कॉन्फ़िगर करना आवश्यक है, ताकि प्रारंभिक एचटीटीपी हैंडशेक सफलतापूर्वक पूरा हो सके।

Upgrade और Connection के लिए proxy_set_header निर्देश अत्यंत महत्वपूर्ण हैं। साथ ही, स्थायी WebSocket कनेक्शनों के लिए लंबा proxy_read_timeout रखना अनुशंसित है।

http {
    upstream websocket_backend {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location /ws/ {
            proxy_pass http://websocket_backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_read_timeout 86400s; # Long timeout for WebSockets
        }
    }
}

Nginx: Sticky Sessions लागू करना

Nginx के साथ Sticky sessions सुनिश्चित करने के लिए आप अपने upstream ब्लॉक में ip_hash निर्देश का उपयोग कर सकते हैं। यह निर्देश सुनिश्चित करता है कि एक ही क्लाइंट IP पते से आने वाले अनुरोध लगातार उसी बैकएंड Server पर भेजे जाएँ।

यह सीधा तरीका है, लेकिन याद रखें कि IP हैश सभी परिस्थितियों के लिए उपयुक्त नहीं हो सकता, खासकर तब जब कई उपयोगकर्ता एक ही सार्वजनिक IP पता साझा करते हों।

http {
    upstream websocket_backend {
        ip_hash; # Enables sticky sessions by client IP
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location /ws/ {
            proxy_pass http://websocket_backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_read_timeout 86400s;
        }
    }
}

HAProxy: WebSocket का मूल कॉन्फ़िगरेशन

HAProxy एक अन्य शक्तिशाली और व्यापक रूप से उपयोग किया जाने वाला ओपन-सोर्स लोड बैलेंसर है, जो विशेष रूप से अपनी उच्च उपलब्धता और उन्नत रूटिंग क्षमताओं के लिए जाना जाता है। WebSockets के लिए HAProxy को कॉन्फ़िगर करने में सही संचालन मोड (mode http) सेट करना और WebSocket ट्रैफ़िक की पहचान व रूटिंग के लिए नियम बनाना शामिल है।

अक्सर एक Access Control List (ACL) का उपयोग Upgrade: websocket हेडर का पता लगाने और ट्रैफ़िक को किसी विशिष्ट बैकएंड Server समूह की ओर भेजने के लिए किया जाता है।

frontend http_front
    bind *:80
    mode http
    default_backend ws_backend

backend ws_backend
    mode http
    option http-server-close
    acl is_websocket hdr(Upgrade) -i websocket
    use_backend ws_servers if is_websocket
    default-server inter 1s fall 2 rise 5

backend ws_servers
    mode http
    balance roundrobin
    server web1 192.168.1.1:8000 check
    server web2 192.168.1.2:8000 check

HAProxy: कुकी-आधारित Sticky Sessions

अधिक विश्वसनीय Sticky sessions के लिए HAProxy क्लाइंट के ब्राउज़र में ऐसी कुकी डाल सकता है जो उस विशिष्ट बैकएंड Server की पहचान करती है जिससे क्लाइंट कनेक्ट है। इसके बाद क्लाइंट प्रत्येक बाद के अनुरोध के साथ यह कुकी भेजता है, जिससे वे लगातार उसी Server पर भेजे जाते हैं।

यह विधि IP हैश की तुलना में बेहतर स्थायित्व प्रदान करती है, खासकर उन वातावरणों में जहाँ क्लाइंट के IP पते बदल सकते हैं या साझा किए जा सकते हैं।

backend ws_servers
    mode http
    balance roundrobin
    cookie SERVERID insert indirect nocache # Insert a cookie
    server web1 192.168.1.1:8000 check cookie s1
    server web2 192.168.1.2:8000 check cookie s2

अपनी समझ जाँचें

WebSocket ट्रैफ़िक के लिए लोड बैलेंसर कॉन्फ़िगर करते समय निम्नलिखित में से किन बातों का ध्यान रखना आवश्यक है?

WebSockets के लोड बैलेंसिंग का पुनरावलोकन

इस पाठ में हमने WebSocket एप्लिकेशन के लोड बैलेंसिंग के महत्वपूर्ण पहलुओं को समझा:

  • WebSockets एचटीटीपी अपग्रेड हैंडशेक से शुरू होते हैं, जिसके लिए आवश्यक हेडर को लोड बैलेंसर द्वारा सही ढंग से आगे भेजना होता है।
  • Sticky sessions यह सुनिश्चित करने के लिए आवश्यक हैं कि क्लाइंट अपने पूरे जीवनकाल में उसी बैकएंड Server के साथ स्थायी कनेक्शन बनाए रखे।
  • Nginx और HAProxy जैसे लोड बैलेंसर को WebSocket अपग्रेड संभालने और IP हैश या कुकी-आधारित रूटिंग जैसी विधियों से Sticky sessions लागू करने के लिए कॉन्फ़िगर किया जा सकता है।

इन कॉन्फ़िगरेशन में दक्षता हासिल करना स्केलेबल, मजबूत और उच्च-प्रदर्शन वाली रीयल-टाइम प्रणालियाँ बनाने की कुंजी है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
47

अक्सर पूछे जाने वाले प्रश्न

क्या “WebSockets का लोड संतुलन” पाठ निःशुल्क है?

हाँ—“WebSockets का लोड संतुलन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“WebSockets का लोड संतुलन” में मैं क्या सीखूँगा?

स्टिकी सेशन और WebSocket अपग्रेड को सही ढंग से संभालने के लिए लोड बैलेंसर (जैसे Nginx, HAProxy) कॉन्फ़िगर कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“WebSockets का लोड संतुलन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. क्षैतिज स्केलिंग की रणनीतियाँ
  2. WebSockets का लोड संतुलन
  3. वितरित स्थिति प्रबंधन
  4. Redis के साथ Pub/Sub बैकप्लेन
← WebSockets और रीयल-टाइम सिस्टम प्रोग्रामिंग पर वापस जाएँ