Какой должна быть ваша стратегия управления транзакциями для системы электронной коммерции? - PullRequest
1 голос
/ 04 октября 2010

Каков общий шаблон или подход к управлению транзакциями в сетевой системе электронной торговли? Как вы справляетесь с ситуацией, когда более одного пользователя пытаются купить последний товар, например?

Ответы [ 2 ]

1 голос
/ 04 октября 2010

Чтобы два пользователя не могли купить один и тот же товар, на складе которого есть только 1 единица, необходимо проверить наличие каждого товара в корзине пользователя непосредственно перед созданием заказа и уменьшением запаса для этого товара.

Эта операция должна быть атомарной, и только один заказ может быть обработан в любой момент времени (читай: транзакция базы данных ), что не должно быть проблемой, если вы используете центральную базу данных для управления запасами .

Если к моменту проверки клиентом запаса закончился, вы должны удалить товар из корзины клиента и перенаправить его в корзину, сообщив им о ситуации.

Конечно, эта ситуация возникает, только когда два пользователя добавляют один и тот же товар в корзину, из которых только один товар есть в наличии, и один из них оформляет заказ. Первым прибыл - первым обслужен Эквивалент в русском языке: поздний гость гложет и кость. Как правило, вы не должны позволять клиентам добавлять товары в свою корзину, если на данный момент нет в наличии товара, если только вы не можете заказать новый товар в течение разумного периода времени, но в этом случае весь вопрос не имеет значения.

Вы можете воспользоваться преимущественным подходом, проверив наличие товара на складе в тот момент, когда клиент инициирует оформление заказа и выберет тот же маршрут, что и выше. Однако это будет зависеть от характера вашего продукта и объема транзакций по сравнению с отмененными заказами. Если существует вероятность того, что другой заказ на тот же товар был отменен в то же время, и запас становится доступным к моменту проверки клиента, то вы не хотите потерять продажу, сообщив клиенту, что акции нет в наличии. Лучше позволить заказу сбоить в тот момент, когда на складе нет товара, и сообщить клиенту о ситуации, что, в конце концов, редко.

0 голосов
/ 08 октября 2010

Почему бы не принять заказ, а затем получить этот товар для клиента, возможно, чуть позже? Вы можете выиграть постоянный клиент:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...