Actualmente en pruebas: el código de GitHub se abrirá al finalizar.
Un servicio de bloqueo distribuido ligero, rápido y de código abierto que ordena varios servidores y procesos con una sola clave
Ticketing es un servidor de bloqueo distribuido creado para gestionar tus momentos de mayor tráfico lo más rápido posible. Existe para evitar los accidentes que ocurren cuando se vende más cantidad de la disponible, el mismo asiento se asigna a dos personas o un mismo cupón se canjea dos veces a la vez.
A diferencia de la mayoría de los bloqueos distribuidos, que se implementan como scripts, Ticketing está escrito en Rust para lograr tanto eficiencia de memoria como velocidad. Lee el protocolo binario de ancho fijo por desplazamiento sin análisis alguno, y ni siquiera reserva memoria en el heap mientras atiende una solicitud. En pruebas de un solo nodo, gestiona más de 1 millón de operaciones por segundo usando menos de 10 MB de memoria. Su cola garantiza el orden y, con el clúster Raft activado, el servicio sigue funcionando sin ninguna interrupción incluso cuando los nodos se apagan uno a uno — por ejemplo, durante reinicios de instancias en la nube o un mantenimiento progresivo.
Protocolo binario de tramas
Diseñado desde cero con campos binarios de ancho fijo, se lee directamente por desplazamiento de bytes sin ninguna pasada de análisis y con una sobrecarga mínima.
🔑
Tokens de fencing
Cada adquisición emite un token que aumenta de forma monótona, protegiéndote incluso en los momentos en que el servidor de bloqueos no es perfectamente consistente.
🔄
Clúster sin interrupciones
Un clúster con consenso Raft. Con 3 nodos, el servicio sigue funcionando ante caídas y reinicios de nodos, y la exclusión mutua nunca se rompe, ni siquiera durante una partición.
🌐
Clientes nativos para los principales lenguajes
Clientes oficiales para Java/Kotlin, JavaScript/TypeScript, Python, Go, Rust y más — cada uno con una API idiomática (asíncrona o bloqueante) que se siente nativa en su lenguaje.
🚀
Guía de despliegue del servidor
Docker · Podman · Kubernetes · binario — genera ahora mismo comandos de ejecución en modo único o en clúster
Rendimiento
Comparación de velocidad con Redisson (Redis), el sistema de bloqueo distribuido más utilizado.
Clientes de 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
Redisreferencia
4,909.1 ms · 8,148 ops/s
4,909.1 ms
La longitud de la barra es el tiempo total (ms) de toda la ejecución — más corto es más rápido.
32 contended keys × 1,250 ops · concurrency 64 · mac mini m4 2024 basic (10 core), single local server, acknowledged release, 1s min-work budget
Plataformas compatibles