বর্তমানে পরীক্ষা চলছে: সম্পূর্ণ হলে GitHub কোড উন্মুক্ত করা হবে।
একটি চাবি দিয়ে একাধিক সার্ভার ও প্রসেসের ক্রম গুছিয়ে রাখা, হালকা ও দ্রুতগতির ওপেন-সোর্স ডিস্ট্রিবিউটেড লক সার্ভিস
Ticketing হলো এমন একটি ডিস্ট্রিবিউটেড লক সার্ভার, যা সবচেয়ে বেশি ট্রাফিকের মুহূর্তগুলো যত দ্রুত সম্ভব সামলানোর জন্য তৈরি। সীমিত সংখ্যক পণ্য তার চেয়ে বেশি বিক্রি হয়ে যাওয়া, একই সিট দুইজনকে বরাদ্দ হয়ে যাওয়া, অথবা একটি কুপন একই সঙ্গে দুইবার ব্যবহৃত হয়ে যাওয়ার মতো দুর্ঘটনা ঠেকানোর জন্য এটি তৈরি হয়েছে।
বেশিরভাগ ডিস্ট্রিবিউটেড লক স্ক্রিপ্ট হিসেবে বাস্তবায়িত হলেও, Ticketing মেমরি সাশ্রয় ও গতি — দুটোই একসঙ্গে পাওয়ার জন্য Rust-এ লেখা হয়েছে। এটি কোনো পার্সিং ছাড়াই সরাসরি অফসেট থেকে ফিক্সড-উইদথ বাইনারি প্রোটোকল পড়ে, এবং অনুরোধ প্রক্রিয়াকরণের সময় হিপে কোনো অ্যালোকেশনও করে না। একক-নোড বেঞ্চমার্কে এটি ১০ মেগাবাইটের কম মেমরি ব্যবহার করে সেকেন্ডে ১০ লক্ষেরও বেশি অপারেশন সামলায়। এর সারি ক্রম নিশ্চিত করে, আর Raft ক্লাস্টার চালু থাকলে ক্লাউড ইনস্ট্যান্স রিবুট বা ধারাবাহিক রক্ষণাবেক্ষণের মতো পরিস্থিতিতে নোড একে একে বন্ধ হলেও সেবা কোনো বিরতি ছাড়াই চলতে থাকে।
বাইনারি ফ্রেম প্রোটোকল
শুরু থেকেই ফিক্সড-উইদথ বাইনারি ফিল্ড দিয়ে ডিজাইন করা, কোনো পার্সিং ধাপ ছাড়াই সরাসরি বাইট অফসেট থেকে ন্যূনতম ওভারহেডে পড়া যায়।
🔑
ফেন্সিং টোকেন
প্রতিটি অর্জনে একটি ক্রমবর্ধমান টোকেন ইস্যু করা হয়, ফলে লক সার্ভার প্রতি মুহূর্তে সম্পূর্ণ সামঞ্জস্যপূর্ণ না থাকলেও আপনি নিরাপদ থাকেন।
🔄
নন-স্টপ ক্লাস্টার
Raft-কনসেন্সাস ভিত্তিক ক্লাস্টার। ৩টি নোডের কনফিগারেশনে নোড ব্যর্থতা ও রিস্টার্টের মধ্যেও সেবা চালু থাকে, আর পার্টিশনের সময়ও পারস্পরিক এক্সক্লুশন কখনো ভাঙে না।
🌐
প্রধান ভাষাগুলোর জন্য নেটিভ ক্লায়েন্ট
Java/Kotlin, JavaScript/TypeScript, Python, Go, Rust সহ আরও অনেক প্রধান ভাষার জন্য অফিসিয়াল ক্লায়েন্ট সরবরাহ করা হয় — প্রতিটিতে সেই ভাষার সঙ্গে স্বাভাবিক মানানসই ইডিওম্যাটিক API (async বা ব্লকিং) রয়েছে।
🚀
সার্ভার ডিপ্লয়মেন্ট গাইড
Docker · Podman · Kubernetes · বাইনারি — এখনই সিঙ্গেল/ক্লাস্টার রান কমান্ড তৈরি করুন
পারফরম্যান্স
সবচেয়ে জনপ্রিয় ডিস্ট্রিবিউটেড লক সিস্টেম Redisson (Redis)-এর সাথে গতির তুলনা।
Ticketing ক্লায়েন্টRedis (Redisson RLock)
JavaScript
210.2 ms · 190,295 ops/s
210.2 ms
Rust
225.9 ms · 177,069 ops/s
225.9 ms
Go
228.4 ms · 175,131 ops/s
228.4 ms
C#
286.9 ms · 139,421 ops/s
286.9 ms
Kotlin
443.5 ms · 90,192 ops/s
443.5 ms
Java
457.8 ms · 87,374 ops/s
457.8 ms
C/C++
659.7 ms · 60,634 ops/s
659.7 ms
Python
739.4 ms · 54,098 ops/s
739.4 ms
Ruby
1,682.4 ms · 23,776 ops/s
1,682.4 ms
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
প্ল্যাটফর্ম সাপোর্ট