Saat ini dalam pengujian: kode GitHub akan dibuka setelah selesai.
Layanan distributed lock open-source yang ringan dan cepat, mengurutkan banyak server dan proses hanya dengan satu key
Ticketing adalah server distributed lock yang dibangun untuk menangani momen trafik tertinggi Anda secepat mungkin. Layanan ini ada untuk mencegah kecelakaan yang terjadi ketika stok terbatas terjual melebihi kuota, kursi yang sama diberikan ke dua orang, atau satu kupon ditukarkan dua kali sekaligus.
Berbeda dari kebanyakan distributed lock yang diimplementasikan sebagai skrip, Ticketing ditulis dalam Rust untuk mendapatkan efisiensi memori sekaligus kecepatan. Ticketing membaca protokol biner berlebar tetap berdasarkan offset tanpa parsing, dan tidak melakukan alokasi heap sekalipun saat memproses request. Dalam benchmark satu node, Ticketing menangani lebih dari 1 juta ops/detik dengan penggunaan memori di bawah 10MB. Antreannya menjamin urutan, dan dengan cluster Raft diaktifkan, layanan tetap berjalan tanpa downtime bahkan saat node turun satu per satu — misalnya saat reboot instance cloud atau pemeliharaan bergilir.
Protokol Binary Frame
Dirancang sejak awal dengan field biner berlebar tetap, dibaca langsung dari offset byte tanpa proses parsing dan overhead minimal.
🔑
Fencing Token
Setiap acquire menerbitkan token yang selalu bertambah (monotonic), menjaga Anda tetap aman bahkan di saat-saat lock server tidak sepenuhnya konsisten.
🔄
Cluster Tanpa Henti
Cluster berbasis konsensus Raft. Dengan 3 node, layanan tetap berjalan meski ada node yang gagal atau restart, dan mutual exclusion tidak pernah rusak bahkan saat terjadi partisi.
🌐
Klien Native untuk Bahasa Utama
Klien resmi untuk Java/Kotlin, JavaScript/TypeScript, Python, Go, Rust, dan lainnya — masing-masing dengan API idiomatis (async atau blocking) yang terasa alami di bahasa tersebut.
🚀
Panduan Deployment Server
Docker · Podman · Kubernetes · binary — buat perintah jalankan single/cluster sekarang juga
Performa
Perbandingan kecepatan dengan Redisson (Redis), sistem distributed lock yang paling banyak digunakan.
Klien TicketingRedis (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
Redisdasar
4,909.1 ms · 8,148 ops/s
4,909.1 ms
Panjang batang adalah waktu total (md) untuk seluruh proses — makin pendek makin cepat.
32 contended keys × 1,250 ops · concurrency 64 · mac mini m4 2024 basic (10 core), single local server, acknowledged release, 1s min-work budget
Dukungan Platform