Mapas de asientos y asientos reservados
Los asientos numerados son principalmente un problema de concurrencia disfrazado de plano de planta.
Un asiento se retiene, no se reserva para siempre
Cuando un comprador elige un asiento, se retiene durante 15 minutos. Tiempo suficiente para completar la compra y lo suficientemente breve para que un carrito abandonado no quite un asiento de la venta para la noche. Si no se completa, la retención expira y el asiento vuelve automáticamente.
Dos personas, un asiento
La retención se realiza de forma atómica: exactamente una sesión puede reclamar un asiento dado, y la segunda solicitud se rechaza en lugar de ser enviada a cola. Esto importa más en el peor caso: los últimos asientos, todos haciendo clic a la vez, que es precisamente donde una implementación ingenua vende dos veces.
Las retenciones sobreviven a un fallo
Las retenciones se escriben en la base de datos así como en el almacén rápido en memoria, por lo que un reinicio no libera silenciosamente cada asiento retenido durante la venta.
Mezclar asientos numerados y admisión general
Puedes vender asientos numerados y entradas de admisión general para el mismo evento. La admisión general no tiene asiento a retener, por lo que su disponibilidad se cuenta contra la cantidad del tipo de entrada.
Una consecuencia a considerar: un asiento retenido no es un asiento vendido. Tus cifras de ventas cuentan compras confirmadas, por lo que un momento de venta ocupado mostrará más asientos visualmente bloqueados que entradas vendidas. La brecha se cierra a medida que expiran las retenciones.