Ein leichtgewichtiger, schneller Open-Source-Dienst für verteilte Sperren, der mehrere Server und Prozesse mit einem einzigen Schlüssel ordnet
Ticketing ist ein Server für verteilte Sperren, gebaut, um deine verkehrsreichsten Momente so schnell wie möglich zu verarbeiten. Er existiert, um Unfälle zu verhindern, die entstehen, wenn eine begrenzte Menge überverkauft wird, derselbe Sitzplatz zwei Personen zugewiesen wird oder ein einzelner Gutschein gleichzeitig zweimal eingelöst wird.
Im Gegensatz zu den meisten verteilten Sperren, die als Skripte implementiert werden, ist Ticketing in Rust geschrieben, um sowohl Speichereffizienz als auch Geschwindigkeit zu erreichen. Es liest das binäre Protokoll fester Breite per Offset ohne Parsing und alloziert selbst während der Verarbeitung einer Anfrage nichts auf dem Heap. In Single-Node-Benchmarks verarbeitet es über 1 Million Operationen pro Sekunde bei unter 10 MB Speicherverbrauch. Seine Warteschlange garantiert die Reihenfolge, und mit aktiviertem Raft-Cluster läuft der Dienst ohne Ausfallzeit weiter, selbst wenn Knoten nacheinander ausfallen — etwa bei Cloud-Instanz-Neustarts oder einer rollierenden Wartung.
Binäres Frame-Protokoll
Von Grund auf mit binären Feldern fester Breite entworfen — direkt über Byte-Offsets gelesen, ganz ohne Parsing-Durchlauf und mit minimalem Overhead.
Fencing-Tokens
Jedes Acquire vergibt ein monoton steigendes Token, das dich auch in den Momenten schützt, in denen der Lock-Server nicht perfekt konsistent ist.
Unterbrechungsfreier Cluster
Ein Cluster mit Raft-Konsens. Mit 3 Knoten läuft der Dienst auch bei Knotenausfällen und Neustarts weiter, und der gegenseitige Ausschluss bleibt selbst während einer Partitionierung erhalten.
Native Clients für gängige Sprachen
Offizielle Clients für Java/Kotlin, JavaScript/TypeScript, Python, Go, Rust und weitere — jeweils mit einer idiomatischen API (async oder blockierend), die sich in der jeweiligen Sprache natürlich anfühlt.
Leitfaden zur Serverbereitstellung
Docker · Podman · Kubernetes · Binary — generiere jetzt Single-/Cluster-Startbefehle
→
Leistung
Ein Geschwindigkeitsvergleich mit Redisson (Redis), dem am weitesten verbreiteten verteilten Sperrsystem.
Ticketing-ClientsRedis (Redisson RLock)
RedisBasislinie
4,909.1 ms · 8,148 ops/s
4,909.1 ms
Die Balkenlänge ist die Gesamtlaufzeit (ms) des Durchlaufs — kürzer ist schneller.
32 contended keys × 1,250 ops · concurrency 64 · mac mini m4 2024 basic (10 core), single local server, acknowledged release, 1s min-work budget
Plattformunterstützung