Las mejores prácticas para gestionar la concurrencia en una cesta en un sitio web de comercio electrónico

19

¿Cuál es la mejor práctica para administrar el caso en el que dos clientes agregan al mismo tiempo un producto cuyo stock era solo 1?

¿Debe haber un control en el código de la canasta para evitar que uno de estos 2 clientes agregue el mismo producto?

¿O esta verificación debe llevarse a cabo en la fase de pago al hacer, por ejemplo, una segunda consulta para confirmar que el producto en cuestión todavía está presente en stock (significa que el cliente concurrente aún no lo ha comprado)?

Mik378
fuente
Algunos sitios, como las reservas de entradas para el teatro, ponen una retención de tiempo limitado en el artículo para usted, mientras se procesa el pedido
Brad Thomas

Respuestas:

11

No hay una respuesta perfecta para esta pregunta y todo depende de los detalles.

Como primera "línea de defensa", trataría de evitar tales situaciones, simplemente no vendiendo artículos tan bajos si es posible. Si esto es posible, puede depender de la situación y el tipo de artículos que desea vender. En la empresa donde trabajo, los artículos se eliminan principalmente del sitio web antes de que se agoten las existencias. Pero estamos vendiendo toda la venta y los pocos artículos restantes son vendidos por nuestro personal de ventas como ofertas especiales. Esto puede no ser una opción para tiendas pequeñas, especialmente cuando se venden artículos de alto precio.

La solución para hacer la doble verificación al agregar algo a la canasta no es muy buena. La gente pone mucho en cestas sin hacer un pedido. Esto puede bloquear este artículo por un cierto período de tiempo.

Entonces, en mi humilde opinión para trabajos pequeños, la mejor manera es hacer un cheque final justo antes del pago, cuando se realiza el pedido. En el peor de los casos, debe decirle a su cliente que se está quedando sin existencias en este momento (lo que no ocurre con frecuencia en las tiendas pequeñas).

Thorsten Müller
fuente
buena captura - bajo en stock y precios altos
rohanagarwal
5

Creo que la mejor práctica es elegir cuál de las siguientes opciones es más apropiada para un caso de negocios en particular :

  1. Bloqueo optimista sin conexión

    ... resuelve este problema ( problema de conflicto de sesión ) al validar que los cambios a punto de ser confirmados por una sesión no entren en conflicto con los cambios de otra sesión. Una validación previa a la confirmación exitosa es, en cierto sentido, obtener un bloqueo que indica que está bien continuar con los cambios en los datos de registro. Mientras la validación y las actualizaciones ocurran dentro de una sola transacción del sistema, la transacción comercial mostrará consistencia ...

  2. El bloqueo pesimista sin conexión
    ... evita conflictos al evitarlos por completo. Obliga a una transacción comercial a adquirir un bloqueo en un dato antes de que comience a usarlo, por lo que, la mayoría de las veces, una vez que comience una transacción comercial, puede estar seguro de que la completará sin que la concurrencia la rebote controlar...
"Mientras que el bloqueo sin conexión pesimista supone que la posibilidad de conflicto de sesión es alta y, por lo tanto, limita la concurrencia del sistema, el bloqueo sin conexión optimista supone que la posibilidad de conflicto es baja. La expectativa de que el conflicto de sesión no sea probable permite que varios usuarios trabajen con el mismo datos al mismo tiempo ".

mosquito
fuente
5

Este es un problema de personas , así como un problema de base de datos, ¡el bloqueo de la base de datos es fácil!

Dado que un cliente nunca puede salir ...

Tienes dos opciones básicas:

  • Usted reserva un artículo para el cliente por un tiempo fijo, digamos (20 minutos) después de que lo haya agregado a la cesta, después de que tengan que volver a verificar el nivel de existencias o comenzar de nuevo. Esto se usa a menudo para boletos para eventos o asientos de aerolíneas.

  • O dices algo como "xxx normal enviado en 24 horas", pero reserva el stock al momento de pagar, en este caso debes permitir que cancelen el pedido después del pago si algunos artículos están en stock pero otros no. (Los niveles de existencias verde, amarillo y rojo también pueden funcionar bien, o algunos sitios web dicen "existencias bajas" cuando están en 1 o 2)

Ian
fuente
2

Como siempre, depende de cuáles sean sus requisitos. Si usted es Amazon y vende 100,000,000 artículos por día, la sobrecarga para la verificación preventiva y el bloqueo es probablemente prohibitiva, y el problema de que un cliente por día no obtenga su artículo después de todo es insignificante. Si tratas con raros íconos religiosos antiguos que son únicos y caros, probablemente se aplica lo contrario. Usted mismo debe saber dónde se encuentra su caso de negocios en ese espectro.

Kilian Foth
fuente
2

En nuestro caso, utilizamos la cola de mensajes para manejar los pedidos y la configuramos de modo que solo procese un trabajo a la vez en secuencia en el mismo producto, de manera FIFO.

La advertencia es que está agregando una nueva sobrecarga a todo el proceso de pedido que retrasa un poco las cosas.

Korayem
fuente
estás limitando la cola para ser consumida por un solo consumidor
rohanagarwal
1

La mejor práctica, para el usuario, es obviamente asegurarse de que falla la segunda adición. Pero esto va a ralentizar todo su sitio por el caso del 0.1%.

La solución más eficiente técnicamente, y la que maximiza las ventas, es permitir que tenga éxito y luego tratar de cumplir con ambos pedidos, solo porque no tiene stock en este momento, no significa que no pueda encontrarlo. en una emergencia. Si no puede, alguien tiene que contactar al usuario que tuvo suerte y pedir disculpas. Pero eso es exactamente lo que provocó alboroto antes de Navidad este año (este no es el único artículo que apareció, por lo que me disculpo con Best Buy, pero fue el primero que encontré).

Su trabajo es presentar todas las opciones al negocio, con pros y contras, y dejar que decidan según su consejo. Si pueden permitirse un pequeño golpe ocasional a la reputación para maximizar las ventas, entonces lo suficientemente justo; si no pueden y el tráfico es tan bajo que puede buscar actualizaciones dobles rápidamente, entonces esa también es su decisión.

pdr
fuente