Найкраща практика управління сумісністю в кошику на веб-сайті електронної комерції


19

Яка найкраща практика управління випадком, коли двоє клієнтів додають за один раз продукт, запас якого становив лише 1?

Чи повинен бути код у кошику, щоб уникнути того, щоб хтось із цих 2 клієнтів додав той самий товар?

Або ця перевірка повинна здійснюватися на етапі оплати, роблячи, наприклад, другий запит на підтвердження того, що відповідний товар все ще присутній на складі (кошти, які ще не придбав одночасний клієнт)?


Деякі сайти, як-от бронювання квитків на театр, розміщують обмежений час на предмет, а замовлення опрацьовується
Бред Томас

Відповіді:


11

На це питання немає ідеальної відповіді, і все залежить від деталей.

Як перший «захисний напрямок» я б спробував взагалі уникнути подібних ситуацій, просто не продаючи, якщо це можливо, найменші статті. Якщо це можливо, це може залежати від ситуації та виду товарів, які ви хочете продати. У компанії, в якій я працюю, статті здебільшого видаляються з веб-сайту, перш ніж ми закінчимося. Але ми продаємо цілі розпродажі, і кілька решти речей продаються нашими продавцями як спеціальні пропозиції. Це може не бути варіантом для невеликих магазинів, особливо, коли продаються вироби з високою ціною.

Рішення зробити подвійну перевірку, додаючи щось у кошик, не дуже добре. Люди багато кладуть у кошики, навіть ніколи фактично не замовляючи. Тому це може блокувати цю статтю на певний проміжок часу.

Тож, на мою скромну думку, для невеликих робочих місць найкращим способом є остаточний чек безпосередньо перед оплатою, коли замовлення фактично зроблено. У гіршому випадку вам доведеться сказати покупцеві, що вам там, де зараз не вистачає запасів (що для невеликих магазинів трапляється не так часто).


приємний улов - низький запас і високі ціни
rohanagarwal

5

Я думаю, що найкраща практика полягає у виборі, який із наведених нижче варіантів підходить для конкретного ділового випадку :

  1. Оптимістичний офлайн-блокування

    ... вирішує цю проблему ( проблема конфлікту сеансу ), перевіряючи, що зміни, які мають бути здійснені одним сеансом, не суперечать змінам іншого сеансу. В певному сенсі успішна перевірка попереднього вчинення - це блокування, що вказує на те, що добре продовжувати зміни даних запису. Поки валідація та оновлення відбудуться в рамках однієї системної транзакції, бізнес-транзакція буде демонструвати послідовність ...

  2. Песимістичний офлайн-блокування
    ... запобігає конфліктам, уникаючи їх взагалі. Він змушує ділову транзакцію придбати блокування на фрагменті даних до того, як він почне його використовувати, так що, більшість часу, починаючи ділову транзакцію, ви можете бути впевнені, що завершите її, не будучи відбиваючись від одночасності контроль...
"Хоча песимістичний офлайн-блокування передбачає, що шанс конфлікту сеансу високий і, таким чином, обмежує одночасність системи, Optimistic Offline Lock припускає, що шанс конфлікту низький. Очікування, що конфлікт сеансу, ймовірно, не дозволяє багатьом користувачам працювати з тим же самим дані одночасно ".


5

Це проблема людей , а також проблема з базою даних, блокування бази даних - це простий біт!

Враховуючи, що клієнт ніколи не може перевірити…

У вас є два основні варіанти:

  • Ви зарезервуєте товар для замовника на певний час (20 хвилин) після того, як він додав його в кошик - після закінчення часу вони повинні перевірити рівень запасів або почати заново. Це часто використовується для придбання квитків на події або місця авіакомпанії.

  • Або ви говорите щось на кшталт "ххх звичайно відправляється за 24 години", але резервуйте запас під час оформлення замовлення. У цьому випадку ви повинні дозволити їм скасувати замовлення після оформлення замовлення, якщо деякі товари є на складі, а не інші. (Зелений, жовтий, червоний запаси також можуть добре працювати, або деякі веб-сайти кажуть "низький запас", коли вони знижуються до 1 або 2)


2

Як завжди, це залежить від ваших вимог. Якщо ви Amazon і продаєте 100 000 000 предметів на день, накладні витрати на попереджувальну перевірку та блокування, ймовірно, непомірні, а проблема, коли один клієнт на день не отримує свій товар, зрештою, незначний. Це ви маєте справу з рідкісними античними релігійними іконами, які є унікальними та дорогими, мабуть, застосовується навпаки. Ви самі повинні знати, де знаходиться бізнес-кейс у цьому спектрі.


2

У нашому випадку ми використовували чергу повідомлень для обробки замовлень і налаштовували її таким чином, що вона обробляє лише одне завдання по черзі в одному і тому ж продукті FIFO.

Застереження полягає в тому, що ви додаєте нові накладні витрати до всієї обробки замовлень, що дещо затримує речі.


ви обмежуєте чергу, щоб її споживав лише один споживач
rohanagarwal

1

Краща практика для користувача - це, очевидно, переконатися, що друге додавання не вдасться. Але це сповільнить весь ваш сайт заради 0,1% випадку.

Найбільш технічно ефективне рішення - максимізувати продажі - це дозволити йому досягти успіху, а потім спробувати виконати обидва замовлення пізніше - просто тому, що зараз у вас немає запасів, це не означає, що ви не можете його знайти. в надзвичайній ситуації. Якщо ви не можете, то хтось повинен зв’язатися з користувачем, який пощастив і вибачитися. Але саме це призвело до заворушень перед Різдвом цього року (це не єдина стаття, яка з’явилася, тому вибачтесь за Best Buy, але це було першим, що я знайшов).

Ваше завдання - представити всі варіанти бізнесу з плюсами та мінусами, і нехай вони вирішать на основі ваших порад. Якщо вони можуть дозволити собі випадкові невеликі посягання на репутацію, щоб максимізувати продажі, то досить справедливо; якщо вони не можуть, а трафік настільки малий, що ви можете швидко перевірити наявність подвійних оновлень, то це теж їх дзвінок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.