menuTicketing
close





Ticketing सर्वर तैनाती

निष्पादन पर्यावरण
मोड
bash
क्लाइंट कनेक्शन उदाहरण
rust
nc तेज़ परीक्षा
bash

एनवायरनमेंट वैरिएबल

ticketing.toml (वैकल्पिक) के प्रत्येक विकल्प को एनवायरनमेंट वैरिएबल के रूप में भी दिया जा सकता है। प्राथमिकता क्रम है एनवायरनमेंट वैरिएबल > ticketing.toml > डिफ़ॉल्ट मान, और की व बूलियन मानों में केस-सेंसिटिविटी नहीं होती। Docker इमेज scratch पर आधारित है, इसलिए कॉन्फ़िगरेशन को एनवायरनमेंट वैरिएबल के ज़रिए देना डिफ़ॉल्ट तरीका है (कॉन्फ़िगरेशन फ़ाइल इस्तेमाल करने के लिए इसे माउंट करके CONFIG से पथ बताएँ)।

एनवायरनमेंट वैरिएबलडिफ़ॉल्ट मानविवरण
PORT (SERVER_PORT)5225TCP लिसन पोर्ट। क्लस्टर मोड में अनदेखा होता है और CLUSTER_SELF का पोर्ट उपयोग होता है
DEBUG (SERVER_DEBUG)बिल्ड पर निर्भर1/true होने पर debug लॉग
SOCKET_BIND0.0.0.0लिसन एड्रेस
SOCKET_NODELAYtrueTCP_NODELAY
SOCKET_READ_BUF_LEN4096प्रति-कनेक्शन रीड बफ़र (बाइट्स)
SOCKET_REPLY_QUEUE1024प्रति-कनेक्शन रिस्पॉन्स क्यू लंबाई
SOCKET_REPLY_BATCH64एक write में एकत्र करके भेजे जाने वाले अधिकतम रिस्पॉन्स
SWEEP_INTERVAL_SECS5समाप्त हो चुकी कीज़ को साफ़ करने का अंतराल (सेकंड)
CLUSTER_SELF(कोई नहीं)इस नोड का एडवर्टाइज़ एड्रेस host:port। मौजूद हो तो क्लस्टर मोड
CLUSTER_PEERS(कोई नहीं)नोड पतों की सूची (कॉमा से अलग)। क्रम = प्रमोशन प्राथमिकता, self शामिल, 2 या अधिक
CONFIG./conf/ticketing.tomlकॉन्फ़िगरेशन फ़ाइल का पथ

सिंगल बनाम क्लस्टर

  • सिंगल (1 नोड): यदि [cluster] (या CLUSTER_*) मौजूद न हो, तो यह सिंगल नोड है। यह सबसे तेज़ है, लेकिन रीस्टार्ट के समय संक्षिप्त रुकावट आती है और स्थिति इन-मेमोरी होने के कारण रीस्टार्ट पर मिट जाती है (lease सुरक्षा-जाल का काम करता है)।
  • क्लस्टर (निर्बाध): कम से कम 2 नोड चाहिए। प्रत्येक नोड में समान CLUSTER_PEERS (प्राथमिकता क्रम में) और स्वयं की ओर संकेत करने वाला CLUSTER_SELF होता है। जीवित नोड्स में से सबसे उच्च प्राथमिकता वाला नोड एक्टिव बनता है और शेष नोड स्टैंडबाय के रूप में रीयल-टाइम रेप्लिकेशन प्राप्त करते हैं। विस्तृत कार्यसिद्धांत के लिए कार्यसिद्धांत और प्रोटोकॉल — सर्वर ↔ सर्वर देखें।

Kubernetes क्लस्टर परिनियोजन में StatefulSet + हेडलेस सर्विस का उपयोग होता है। प्रत्येक पॉड को स्थिर DNS नाम (ticketing-0.ticketing…, ticketing-1.ticketing…) मिलता है, इन नामों को प्राथमिकता क्रम में CLUSTER_PEERS में डाला जाता है और प्रत्येक पॉड का CLUSTER_SELF downward API (metadata.name) से स्वचालित रूप से डाला जाता है।

निर्बाध (रोलिंग) रीस्टार्ट

  1. पहले स्टैंडबाय को एक-एक करके रीस्टार्ट करें (एक्टिव सेवा जारी रखता है)।
  2. अंत में एक्टिव को बंद करें (Ctrl+C) तो हैंडऑफ़ के ज़रिए स्टैंडबाय प्रमोट होता है और क्लाइंट उसमें स्थानांतरित हो जाते हैं।
  3. बंद किए गए पुराने एक्टिव को दोबारा चालू करने पर यह वर्तमान एक्टिव के स्टैंडबाय के रूप में जुड़ जाता है (स्वचालित फेलबैक नहीं होता)।

संदर्भ

  • इमेज: sarolab/ticketing · Github: saro-lab/ticketing
  • क्लाइंट (ब्रोकर) में सभी नोड पते पंजीकृत करें ताकि विफलता की स्थिति में स्वचालित रूप से स्विच हो सके। भाषा-विशिष्ट उपयोग विधि के लिए लाइब्रेरीज़ देखें।