इसे छोड़कर कंटेंट पर जाएं

मल्टी-नोड क्लस्टरिंग और हार्टबीट्स

क्षैतिज रूप से स्केल करने और वैश्विक स्तर पर कम विलंबता प्रदान करने के लिए, MirApi Gateway स्वतंत्र गेटवे नोड्स (instances) के एक वितरित क्लस्टर के रूप में चलता है। यह मार्गदर्शिका बताती है कि नोड्स विकेंद्रीकृत Redis हार्टबीट प्रणाली का उपयोग करके स्थिति का समन्वय कैसे करते हैं और स्वास्थ्य की रिपोर्ट कैसे करते हैं।


विकेंद्रीकृत स्वास्थ्य रिपोर्टिंग (Decentralized Health Reporting)

Section titled “विकेंद्रीकृत स्वास्थ्य रिपोर्टिंग (Decentralized Health Reporting)”

एक भारी, केंद्रीय नियंत्रण विमान (control plane) का उपयोग करने के बजाय, गेटवे नोड्स Redis का उपयोग करके स्थिति का समन्वय करते हैं। प्रत्येक नोड एक स्वतंत्र बैकग्राउंड हार्टबीट थ्रेड (StartHeartbeat) चलाता है।

  1. नोड स्टार्टअप: जब कोई नोड इनिशियलाइज़ होता है, तो वह अपने स्थानीय IP पते की पहचान करता है, अपने कॉन्फ़िगर किए गए क्षेत्र को पुनः प्राप्त करता है, और Redis को अपनी स्टार्टअप स्थिति की रिपोर्ट करता है।
  2. नियमित अंतराल: हर $N$ सेकंड (कॉन्फ़िगरेशन NODE_HEARTBEAT_INTERVAL के माध्यम से), नोड स्थानीय संसाधन उपयोग मेट्रिक्स एकत्र करता है और Redis में अपनी स्थिति अपडेट करता है।
  3. TTL (Time-to-Live): Redis कुंजी को एक सख्त TTL (कॉन्फ़िगरेशन NODE_HEARTBEAT_TTL, उदा. 15 सेकंड) के साथ लिखा जाता है। यदि कोई नोड क्रैश हो जाता है या ऑफ़लाइन हो जाता है, तो इसकी कुंजी स्वचालित रूप से Redis से समाप्त हो जाती है, जिससे डैशबोर्ड को संकेत मिलता है कि नोड ऑफ़लाइन है।
  4. व्यवस्थित शटडाउन: सुचारू रूप से शटडाउन होने पर, नोड का इंटरसेप्टर तुरंत Redis से अपनी हार्टबीट कुंजी को हटा देता है, यह सुनिश्चित करते हुए कि डैशबोर्ड TTL समाप्त होने की प्रतीक्षा किए बिना नोड के डिस्कनेक्ट होने की पुष्टि करे।

हार्टबीट डेटा स्कीमा (Heartbeat Data Schema)

Section titled “हार्टबीट डेटा स्कीमा (Heartbeat Data Schema)”

नोड स्थिति को Redis में proxy:node:<node_name> कुंजी पर JSON पेलोड के रूप में संग्रहीत किया जाता है:

{
"node_name": "gateway-eu-1",
"region": "eu-central-1",
"last_heartbeat": "2026-05-26T17:21:00Z",
"ip": "10.0.1.45",
"mem_alloc_mb": 14.85,
"num_goroutine": 42
}

जाँचे जाने वाले फ़ील्ड:

Section titled “जाँचे जाने वाले फ़ील्ड:”
  • node_name: नोड की विशिष्ट पहचानकर्ता नाम।
  • region: वह भौगोलिक या क्लाउड प्रदाता क्षेत्र जहाँ नोड तैनात है।
  • last_heartbeat: अंतिम सफल हार्टबीट राइट का UTC टाइमस्टैम्प।
  • ip: क्लस्टर के अंदर नोड का निजी/स्थानीय IP पता।
  • mem_alloc_mb: Go रनटाइम द्वारा मेगाबाइट में आवंटित वर्तमान RAM मेमोरी (runtime.ReadMemStats के माध्यम से प्राप्त)।
  • num_goroutine: नोड पर वर्तमान में चल रहे सक्रिय Go निष्पादन थ्रेड्स (goroutines) की संख्या, जो वर्तमान कनेक्शन लोड को दर्शाती है।

क्लस्टर डैशबोर्ड विज़ुअलाइज़ेशन (Cluster Dashboard)

Section titled “क्लस्टर डैशबोर्ड विज़ुअलाइज़ेशन (Cluster Dashboard)”

MirApi व्यवस्थापक डैशबोर्ड proxy:node:* से मेल खाने वाली कुंजियों के लिए Redis से पूछताछ करता है। डैशबोर्ड क्लस्टर का लाइव दृश्य प्रस्तुत करने के लिए इन रिकॉर्ड्स को एकत्रित करता है:

  • सक्रिय नोड्स की संख्या: वर्तमान में चल रहे गेटवे नोड्स की कुल संख्या।
  • संसाधन उपयोग: क्लस्टर में वास्तविक समय में आवंटित कुल RAM और सक्रिय गोरूटीन की संख्या।
  • भौगोलिक लोड वितरण: सक्रिय क्षेत्रों (उदा. यूरोपीय ट्रैफ़िक को eu-central-1 नोड्स पर निर्देशित करना) द्वारा ट्रैफ़िक रूटिंग।