एक हल्की, तेज़, ओपन-सोर्स डिस्ट्रिब्यूटेड लॉक सेवा जो एक ही कुंजी से कई सर्वरों और प्रोसेस के क्रम को व्यवस्थित करती है
Ticketing एक डिस्ट्रिब्यूटेड लॉक सर्वर है जिसे आपके सबसे अधिक ट्रैफ़िक वाले क्षणों को यथासंभव तेज़ी से संभालने के लिए बनाया गया है। यह उन दुर्घटनाओं को रोकने के लिए है जो तब होती हैं जब सीमित मात्रा में मौजूद कोई वस्तु अधिक बिक जाती है, वही सीट दो लोगों को सौंप दी जाती है, या एक ही कूपन एक साथ दो बार भुना लिया जाता है।
अधिकांश डिस्ट्रिब्यूटेड लॉक के विपरीत, जो स्क्रिप्ट के रूप में लागू किए जाते हैं, Ticketing को मेमोरी दक्षता और गति दोनों पाने के लिए Rust में लिखा गया है। यह बिना किसी पार्सिंग के फ़िक्स्ड-चौड़ाई वाले बाइनरी प्रोटोकॉल को ऑफ़सेट के आधार पर पढ़ता है, और एक अनुरोध को संभालते समय भी हीप पर आवंटन (allocate) नहीं करता। सिंगल-नोड बेंचमार्क में यह 10MB से कम मेमोरी का उपयोग करते हुए प्रति सेकंड 10 लाख से अधिक ऑपरेशन संभालता है। इसकी कतार (queue) क्रम की गारंटी देती है, और Raft क्लस्टर चालू होने पर, नोड एक-एक करके बंद होने पर भी — जैसे क्लाउड इंस्टेंस के रीबूट या क्रमिक रखरखाव के दौरान — सेवा बिना किसी रुकावट के चलती रहती है।
बाइनरी फ़्रेम प्रोटोकॉल
शुरुआत से ही फ़िक्स्ड-चौड़ाई वाले बाइनरी फ़ील्ड के साथ डिज़ाइन किया गया — बिना किसी पार्सिंग पास के, न्यूनतम ओवरहेड पर, सीधे बाइट ऑफ़सेट से पढ़ा जाता है।
फेंसिंग टोकन
हर अधिग्रहण (acquire) पर एक क्रमिक रूप से बढ़ने वाला टोकन जारी होता है, जिससे उन क्षणों में भी आप सुरक्षित रहते हैं जब लॉक सर्वर पूरी तरह से संगत (consistent) नहीं होता।
रुकावट-रहित क्लस्टर
Raft-सर्वसम्मति (consensus) आधारित क्लस्टर। 3 नोड के साथ, नोड विफलता और पुनरारंभ के दौरान भी सेवा चलती रहती है, और विभाजन (partition) के दौरान भी परस्पर बहिष्करण (mutual exclusion) कभी नहीं टूटता।
प्रमुख भाषाओं के लिए नेटिव क्लाइंट
Java/Kotlin, JavaScript/TypeScript, Python, Go, Rust और अन्य के लिए आधिकारिक क्लाइंट — हर एक में एक मुहावरेदार (idiomatic) API (async या ब्लॉकिंग) जो उस भाषा के लिए स्वाभाविक लगे।
सर्वर परिनियोजन (डिप्लॉयमेंट) गाइड
Docker · Podman · Kubernetes · बाइनरी — सिंगल/क्लस्टर रन कमांड अभी जनरेट करें
→
परफ़ॉर्मेंस
सबसे व्यापक रूप से उपयोग होने वाले डिस्ट्रिब्यूटेड लॉक सिस्टम Redisson (Redis) के साथ गति तुलना।
Ticketing क्लाइंटRedis (Redisson RLock)
Redisआधार रेखा
4,909.1 ms · 8,148 ops/s
4,909.1 ms
बार की लंबाई पूरी प्रक्रिया में लगे समय (ms) को दर्शाती है — जितना छोटा, उतना तेज़।
32 contended keys × 1,250 ops · concurrency 64 · mac mini m4 2024 basic (10 core), single local server, acknowledged release, 1s min-work budget
प्लेटफ़ॉर्म सपोर्ट